Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2020 11:53:12

dune10991
Зарегистрирован: 2020-03-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Зависание Tkinter

Подскажите, где что исправить.
Есть код для получения данных с датчика метеостанции на ардуино. С ардуино надо принять строку через com-порт и вывести температуру через окно Tk
Если увеличить root.after(10, run), скажем до 10000, то подвисаний практически нет. Но если требуется большая скорость обновления информации

 from tkinter import Tk, Label, mainloop
from time import sleep
import serial
import json
ser = serial.Serial('COM3', 115200, timeout=1.0,  xonxoff=False)
ser.write(b'1')
def datchik():
    data=ser.readline()
    if len(data)>70:
        stroka=data.decode('utf-8')
        dict = json.loads(stroka)
        label1_2.config(text = str(dict["temp"]))
        label2_2.config(text = str(dict["hum"]))
    root.after(10000, datchik)
root=Tk()
datchik()
label1_1 = Label(root, text="Температура ")
label1_2 = Label(root,text='n/d')
label1_1.grid(row=0, column=0)
label1_2.grid(row=0, column=1)
root.mainloop()

Офлайн

#2 Март 6, 2020 15:45:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Зависание Tkinter

Предполагаю что это изза того что timeout=1.0 (1 сек), а root.after(10, run) тоесть 0.01 сек. Но это не точно . На самм деле ХЗ что там на самом деле, но я столкнулся с той-же проблемой с ардуиной, когда помогал “ребетенку” с дипломной работой. ГУИ подвисало в самый непредсказуемый момент, могло зависнуть на второй секундке, а могло без проблем отработать от начала до конца. Посколку времени было мало, чтобы досконально разобраться, то проблему решили радикально, вынесли опрос компорта в отдельный процесс, и зависания прекратились.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Март 6, 2020 15:46:42)

Офлайн

#3 Март 6, 2020 16:03:43

dune10991
Зарегистрирован: 2020-03-06
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Зависание Tkinter

PEHDOM
Предполагаю что это изза того что timeout=1.0 (1 сек), а root.after(10, run) тоесть 0.01 сек. Но это не точно . На самм деле ХЗ что там на самом деле, но я столкнулся с той-же проблемой с ардуиной, когда помогал “ребетенку” с дипломной работой. ГУИ подвисало в самый непредсказуемый момент, могло зависнуть на второй секундке, а могло без проблем отработать от начала до конца. Посколку времени было мало, чтобы досконально разобраться, то проблему решили радикально, вынесли опрос компорта в отдельный процесс, и зависания прекратились.
Вот с выносом в отдельный процесс пока у меня сложно(( Так как только осваиваю. Пару часов сегодня читал, но пока к своему скрипту не мог приспособить

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version