0

我正在尝试同时移动两个伺服系统。但是我动不了。因为第二个电机在完成我在 tkinter 规模上命令的第一个电机运动后移动。我已经从多进程导入 Process 并尝试过。当我将 scale 命令从 更改command=self.update为 时,command=Process(target=update, args()).start它给了我NameError: name 'update' is not defined

我不知道我应该怎么做,所以任何帮助都将不胜感激。

我的工作(非同时)代码如下。

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from Tkinter import *
import pigpio
import time

servos = 4-5 #GPIO number
pi = pigpio.pi()
horz = int(500)
vert = int(650)
pi.set_servo_pulsewidth(5, 500)
pi.set_servo_pulsewidth(4, 650)

try:
    class App:

        def __init__(self, master):
            frame = Frame(master)
            frame.pack()

            scale = Scale(frame, from_=2500, to=500,
            orient=HORIZONTAL, command=self.update)  
            scale.grid(row=0)

            scale = Scale(frame, from_=650, to=2000,
            orient=VERTICAL, command=self.update2)
            scale.grid(row=10)

        def update(self, angle_yat):
            global horz
            a = int(angle_yat)
            if horz <= a:
                for i in range(horz, a, 20):
                    pi.set_servo_pulsewidth(5, i)
                    print "yatay ai: ", i
                    time.sleep(0.001)
                    horz = a
            else:
                for i in range(horz, a, -20):
                    pi.set_servo_pulsewidth(5, i)
                    print "yatay ai: ", i
                    time.sleep(0.001)
                    horz = a


        def update2(self, angle):
            global vert
            b = int(angle)
            if vert <= b:
                for i in range(vert, b, 20):
                    pi.set_servo_pulsewidth(4, i)
                    print "yatay ai: ", i
                    time.sleep(0.001)
                    vert = b
            else:
                for i in range(vert, b, -20):
                    pi.set_servo_pulsewidth(4, i)
                    print "dikey ai: ", i
                    time.sleep(0.001)
                    vert = b


    root = Tk()
    root.wm_title('Servo Control')
    app = App(root)
    root.geometry("200x150+0+0")    
    root.mainloop()
except KeyboardInterrupt:
    pi.set_servo_pulsewidth(servos, 0)

finally:
    pi.stop()
4

0 回答 0