Я хочу обновить данные Arduino на Python GUI, но это не происходит, пожалуйста, кто-нибудь выяснить проблему - PullRequest
0 голосов
/ 08 января 2019

Я написал этот код для чтения данных Arduino, используя датчик температуры и влажности dht11, и хотел отобразить данные в интерфейсе tkinter. Я успешно загрузил данные, но они не обновляются. Не знаю, почему, пожалуйста, помогите мне решить эту проблему

import tkinter as tk
import serial

Serial_data = serial.Serial('COM39',9600)

data = Serial_data.read()

root = tk.Tk()
root.geometry('500x350')
label = tk.Label(root,text="hello").grid(row=0)

label1 = tk.Label(root,text=data)
label1.grid(row=1,column=1)
label1.update()
root.mainloop()

Я новичок в Python, поэтому, пожалуйста, постарайтесь быть максимально простым, я буду очень благодарен

1 Ответ

0 голосов
/ 08 января 2019

Поскольку вы звонили Serial_data.read() только один раз и не обновляли ярлык, то ничего не будет обновлено. Вы должны использовать .after() для периодического чтения данных, как показано ниже (просто пример):

import tkinter as tk
import serial

Serial_data = serial.Serial(port='COM3', baudrate=9600, timeout=0.5) # better has timeout set, otherwise may block the program

def read_data():
    # assume the data format: humidity / temperature
    data.set(Serial_data.readline().decode('ascii').strip()) # assume data is terminated by '\n'
    print('"{}" read'.format(data.get()))
    root.after(500, read_data) # period depends on how frequent the arduino writes data to its serial port

root = tk.Tk()

data = tk.StringVar()

tk.Label(root, text='Humidity / Temperature:').grid(row=0, column=0, padx=5, pady=5)
tk.Label(root, textvariable=data, bd=2, relief='solid', width=20, fg='black', bg='white').grid(row=0, column=1, padx=5)

read_data()
root.mainloop()

А на выходе:

enter image description here

Обратите внимание, что я создал свой собственный модуль serial для имитации модуля Python pyserial, и возвращаемые данные генерируются случайным образом. Поэтому вам следует изменить код в соответствии с вашей ситуацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...