МОЖЕТ интерфейс на Raspberry Pi - Tkinter (Пока цикл или tk.after ()?) - PullRequest
0 голосов
/ 15 мая 2019

У меня есть интерфейс шины CAN, подключенный к моему Raspberry Pi.Используя python, я хочу разработать графический интерфейс для отображения интерпретированных сообщений.

Это для Raspberry Pi 3 b +.В настоящее время я пытаюсь реализовать (.after), но боюсь, что некоторая информация будет потеряна.Новичок в этом, поэтому не совсем уверен в частоте сообщений.


def conv(hex):
            #do some hex raeding
            #labelX.configure...... (update tkinter label)



os.system("sudo /sbin/ip link set can0 up type can bitrate 500000")
time.sleep(0.1) 
while True:
        message = bus.recv()    # Wait until a message is received.

        c = '{0:f} {1:x} {2:x} '.format(message.timestamp, message.arbitration_id, message.dlc) #dlc -> Data length code, no of data

            s=''
            for i in range(message.dlc ):
                        s +=  '{0:x} '.format(message.data[i])
            if('73' in CAN_ID):
                       conv(s) 


#--------------------------------------------------------------------------


import tkinter as tk    

win.title("Hello World")
win.configure(background="black")

labelX = Label(win,text="NIL",bg="black",fg="white",font="none 12 bold")
labelX.grid(row=0,column=0,sticky=tk.W)

win.mainloop()

Ожидайте получения сообщения, примените к нему некоторую функцию и обновите метку.Я провел некоторое исследование, и некоторые источники говорят, что не следует использовать цикл while с tkinter mainloop.вместо этого используйте после.(например, win.after (100, conv)).Беспокойство, что если это будет сделано, сообщения от интерфейса CAN будут потеряны.

...