python自动重复串行数据

时间:2014-09-04 20:25:51

标签: python tkinter serial-port

你好我有波纹管代码,它根据tkinter中检查按钮的状态向串口发送一个字符。这很好但我要求字符是通过串口发送的可重复性(每10秒左右),无论检查按钮的状态是否已经改变。我尝试添加while循环,但这会导致程序崩溃。任何帮助都会很棒。

(这是较大代码的一小部分,因为它的工作原理如上所述)

def setCheckButtonText():
    if varCheckButton.get():
         ser.write(bytes('L'))
    else:
         ser.write(bytes('H'))       

def setCheckButtonText2():
    if varCheckButton2.get():
        ser.write(bytes('F'))
    else:
       ser.write(bytes('O'))

def setCheckButtonText3():
    if varCheckButton3.get():
        ser.write(bytes('N'))
    else:
        ser.write(bytes('Y'))


ser = serial.Serial('/dev/ttyUSB0', 9600)

varCheckButton = tk.IntVar()
tkCheckButton = tk.Checkbutton(
    mGui,
    variable=varCheckButton,
    command=setCheckButtonText)
tkCheckButton.place(x=60, y=50)

varCheckButton2 = tk.IntVar()
tkCheckButton = tk.Checkbutton(
    mGui,
    variable=varCheckButton2,
    command=setCheckButtonText2)
tkCheckButton.place(x=60, y=90)

varCheckButton3 = tk.IntVar()
tkCheckButton = tk.Checkbutton(
    mGui,
    variable=varCheckButton3,
    command=setCheckButtonText3)
tkCheckButton.place(x=60, y=130)

1 个答案:

答案 0 :(得分:0)

您可能希望封装发送和设置变量。

在您的方法中,您只需将相应的变量设置为字符,而不是直接发送它们。 在另一种方法中,您可以使用这些字符将它们发送到串行端口。您可以在延迟后使用after来调用方法。

def send():
    #Send variables here
    mGui.after(10000, send)

mGui.after(10000, send)