2014-09-04 8 views
0

你好我有以下代碼發送一個字符到串口取決於tkinter中的一個檢查按鈕的狀態。這很好,但我要求通過串口發送重複性(每隔10秒左右),而不管檢查按鈕的狀態是否改變。我曾嘗試在while循環中添加,但這會導致程序崩潰。任何幫助將是盛大的。python自動重複串行數據

(這是一個較大的代碼的一小部分,因爲它代表它的工作原理如前所述)

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) 

回答

0

可能要膠囊發送和設置的變量。

在您的方法中,您可以將適當的變量設置爲字符,而不是直接發送它們。 在另一種方法中,您可以使用這些字符將它們發送到串行端口。您可以使用after在延遲後調用方法。

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

mGui.after(10000, send) 
+0

感謝您的回答。我應該在OP中說到這一切。如何將這個應用到我的代碼?這會重複人物還是延遲他們被髮送? – 2014-09-04 21:00:51

+0

我不想在這裏解釋一切,但是你可以用'char1 = bla'替換'ser.write'調用。如果你使用列表來代替它會更好。在'send'中,您將列表作爲參數獲取,或者您正在使用屬性,因此您可以像以前那樣發送它們。 – TidB 2014-09-04 21:10:42