Я пытаюсь получить массив последовательных данных из arduino и использовать их в качестве координат для меток с Python3 в моем Raspberry Pi 3. Я могу получить массивы с последовательными и разместить метки, как я хочу. Программа работает. Но
Первая проблема в том, что я вижу мерцание и время задержки мерцания становится хуже со временем.
Вторая проблема - программа перестает работать через несколько минут.
Я попробовал ser.flushInput () и каждый раз очищал свои массивы, и результат один и тот же.
from tkinter import *
import serial
root = Tk()
root.geometry("1024x600")
ser = serial.Serial('/dev/ttyAMA0',115200)
ser.timeout=None
data=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
data1=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
image=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
label=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
x1=[210,210,210,370,370,370,530,530,530,690,690,690,850,850,850,850]
y1=[440,325,75,440,325,75,440,325,75,440,325,75,440,325,200,75]
image_gri=PhotoImage(file="/home/pi/python/gri.gif")
image_kirmizi = PhotoImage(file="/home/pi/python/kirmizi.gif")
image_yesil = PhotoImage(file="/home/pi/python/yesil.gif")
def kontrol():
data=[]
ser.flush()
ser.flushInput()
data = ser.read(32)
#print(data)
for i in range(0,16):
if data[i]==49 and data[i+16]==49:
image[i]=image_yesil
label[i] = Label(root, image=image[i])
label[i].place(x=x1[i],y=y1[i])
elif data[i]==49 and data[i+16]==48:
image[i]=image_kirmizi
label[i] = Label(root, image=image[i])
label[i].place(x=x1[i],y=y1[i])
else :
image[i]=image_gri
label[i] = Label(root, image=image[i])
label[i].place(x=x1[i],y=y1[i])
ser.flush()
ser.flushInput()
root.after(50,kontrol)
root.update()
kontrol()
#root.after(50,kontrol)
mainloop()
Я хочу, чтобы программа работала до 12 часов, и не вижу мерцания, когда она работает.