'Problem with function from another file to run in background in python without making program stuck
I code program that controls Universal robots UR5 with sockets and it got stuck when i run "Käynnistä ohjelma" or "Start program" in background with in tkinter button.
Main parts of code: Sub program that starts window:
automaatti_yhteys_ikkuna = Tk()
arvo = 0
print("Ajettu")
käynnistä_koje_käyntiin()
arvo+=1
base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv = 0.6,1.43,2.342,3.43,4.3412,5.121,6.0323,7.312 #Jointspace asetukset
x,y,z,rx,ry,rz,la,lv = 7.0,8.0, 6.0,5.0,4.0,3.0,2.0,1.0 #Toolspace asetukset
#automaatti_yhteys_ikkuna = Toplevel(ikkuna)
automaatti_yhteys_ikkuna.columnconfigure(3, weight=0)
automaatti_yhteys_ikkuna.rowconfigure(0, weight=1)
automaatti_yhteys_ikkuna.title("Automaatti_ohjaus")
leveys = "500"
korkeus = "500"
automaatti_yhteys_ikkuna.geometry(leveys+"x"+korkeus)
Label(automaatti_yhteys_ikkuna,text ="Koordinaatit (kaikki muut paitsi lv, la, jv sekä ja, jotka ovat asetuksia):",highlightthickness=0,border=0,font=("Helvetica",10)).grid(column=0, row=1, sticky=SW, padx=0, pady=0)
Label(automaatti_yhteys_ikkuna,text ="x="+str(x)+" y="+str(y)+" z="+str(z)+" rx="+str(rx)+" ry="+str(ry)+" rz="+str(rz)+" la="+str(la)+" lv="+str(lv),highlightthickness=0,border=0,font=("Helvetica",10)).grid(column=0, row=2, sticky=SW, padx=0, pady=0)
Label(automaatti_yhteys_ikkuna,text ="base="+str(base)+" shouder="+str(shouder)+" elbow="+str(elbow)+" wrist1="+str(wrist1)+" wrist2="+str(wrist2)+" wrist3="+str(wrist3)+" ja="+str(ja)+" jv="+str(jv),highlightthickness=0,border=0,font=("Helvetica",10)).grid(column=0, row=3, sticky=SW, padx=0, pady=0)
Button(automaatti_yhteys_ikkuna,text="Käynnistä ohjelma",command=automaattinen_ohjaus_komennot_käynnistä).place(relx=0.5, rely=0.5,anchor=CENTER,x=-50,y=0)
Button(automaatti_yhteys_ikkuna,text="Sulje ohjelma",command=sulje_ohjaus_komennot_sulje).place(relx=0.5, rely=0.5,anchor=CENTER,x=90,y=0)
Button(automaatti_yhteys_ikkuna,text="Sulje",command=robotin_sulkeminen_ilmoitus).place(relx=0.5, rely=0.5,anchor=CENTER,x=90,y=50)
automaatti_yhteys_ikkuna.mainloop()
Code of starting process:
def automaattinen_ohjaus_komennot_käynnistä(): #Käynnistää automaattisen ohjelman
#Process(target=socket_robot.kaynnistalaite()).start()
#Process(target=socket_robot.automaattinen_ohjaus()).start()
Process(socket_robot.kaynnistalaite()).start()
Process(socket_robot.automaattinen_ohjaus()).start()
pass
Starting with setting coordinates to program
def automaattinen_ohjaus(): #Tähän tulee robotin automaattinen ohjaus
global x,y,z,rx,ry,rz,la,lv,base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv
base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv = 68.95,-61.30,128.65,10.62,87.54,85.48,1.2,0.25 #Jointspace asetukset
x,y,z,rx,ry,rz,la,lv = 3.74,-323.51,-497.28,1.782,-2.389,0.227,1.4,1.05 #Toolspace asetukset
ajaliikekomennot()
base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv = 37.16,6.72,100.48,67.26,49.66,4.10,1.2,0.25
x,y,z,rx,ry,rz,la,lv = 81.05,-284.11,-258.87,2.323,-2.497,2.304,1.4,1.05
ajaliikekomennot()
#käsisulje() #Closes hand doesn't matter now
#käsiavaa() #Opens hand doesn't matter now
base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv = 76.26,4.74,82.69,88.32,101.23,2.35,1.2,0.25
x,y,z,rx,ry,rz,la,lv = 16.55,-197.03,-661.11,4.633,-0.235,-0.008,1.4,1.05
ajaliikekomennot()
base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv = 76.26,4.74,82.69,88.32,101.23,182.88,1.2,0.25
x,y,z,rx,ry,rz,la,lv = 16.55,-197.03,-661.11,4.633,-0.235,-0.008,1.4,1.05
ajaliikekomennot()
This does send data to robot:
def ajaliikekomennot(nopeus=10): #Suorittaa kouran liikkumisen
global muuttosarvo_muutos,s
print("Liikkeen ajaminen ajettu")
"""
HUOM! Movej ajetaan aina ennen movel komentoa
Tällä hetkellä ei käytetä movel komentoa koska se ei toimi
movel ja movej ovat eritavalla toimivat komennot
"""
s.send(movejkomento())
#print("Movej",type(movejkomento())," ",movejkomento())
sleep(nopeus)
#s.send(movelkomento())
#print("Movel",type(movelkomento())," ",movelkomento())
muuttosarvo_muutos = False
#sleep(nopeus)
And last the command to send:
def movejkomento(): #Movejkomento
global base,shouder,elbow,wrist1,wrist2,wrist3,ja,jv, base_arvo,shouder_arvo,elbow_arvo,wrist1_arvo,wrist2_arvo,wrist3_arvo,ja_arvo,jv_arvo
#print("Tämä on shouder_arvo:", shouder_arvo, "\t\n\rTämä on muuttosarvo_muutos", muuttosarvo_muutos)
#print("Tämä on shouder",shouder)
print("Movej ajettu")
if muuttosarvo_muutos == False:
b = str("{:.2f}".format(DegToRad(base)))
s = str("{:.2f}".format(DegToRad(shouder)))
e = str("{:.2f}".format(DegToRad(elbow)))
w1 = str("{:.2f}".format(DegToRad(wrist1)))
w2 = str("{:.2f}".format(DegToRad(wrist2)))
w3 = str("{:.2f}".format(DegToRad(wrist3)))
ja1 = str(ja)
jv1 = str(jv)
elif muuttosarvo_muutos == True:
b = str("{:.2f}".format(DegToRad(base_arvo)))
s = str("{:.2f}".format(DegToRad(shouder_arvo)))
e = str("{:.2f}".format(DegToRad(elbow_arvo)))
w1 = str("{:.2f}".format(DegToRad(wrist1_arvo)))
w2 = str("{:.2f}".format(DegToRad(wrist2_arvo)))
w3 = str("{:.2f}".format(DegToRad(wrist3_arvo)))
ja1 = str(ja_arvo)
jv1 = str(jv_arvo)
test = ("movej(["+ b +"," + s+","+ e +"," + w1+"," + w2 +"," + w3 + "], a=" + ja1 +", v=" +jv1+")\n").encode()
return test
Does time.sleep affect to this or is it someting else?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
