Я узнаю о интерфейсах на Python Tkinter. Я тестировал перед отправкой случайных чисел из моего arduino в свой интерфейс Python, он работал (он постоянно обновляется), поэтому я думал, что он будет работать при отправке данных с датчика, но это не так.Невозможно обновить данные датчика в Python (Tkinter) от датчиков arduino
Итак, это тестовый код, если я нажимаю кнопку, мне нужно будет отправить 3 переменных с номером 1, а если нет, я получу 2 переменных с номером 2 и одной случайной переменной ,
Итак, я никогда не получаю значения, которые я должен получить при нажатии кнопки. Я всегда получаю: случайное число, 2 и 2.
Arduino:
void setup() {
Serial.begin (9600);
pinMode(i_presion, INPUT);
}
void loop()
{
if(digitalRead(i_presion) == HIGH)
{
Serial.print(1);
Serial.print(" ");
Serial.print(1);
Serial.print(" ");
Serial.print(1);
Serial.print(" ");
}
else
{
Serial.print(random(3,8));
Serial.print(" ");
Serial.print(2);
Serial.print(" ");
Serial.print(2);
Serial.print(" ");
}
}
Python:
import serial
import time
from Tkinter import *
root = Tk()
ser = serial.Serial("/dev/cu.usbmodem1411", 9600, timeout=1)
flagCharacter = 'k'
canvas = Canvas(root, width=1920, height=1080)
canvas.pack()
photo = PhotoImage(file= r"ANDREA-FIORI2.gif")
label=Label(root, image=photo)
photo = PhotoImage(file= r"ANDREA-FIORI2.gif")
canvas.pack(side='top', fill='both', expand='yes')
canvas.create_image(0, 0, image=photo, anchor='nw')
def sensores(planeado, producido, alertas):
canvas.create_text(390, 430, text=planeado, fill="gray", font="Helvetica 100 bold",tag="T1")
canvas.create_text(650, 430, text=producido, fill="gray", font="Helvetica 100 bold",tag="T2")
canvas.create_text(900, 430, text=alertas, fill="gray", font="Helvetica 100 bold",tag="T3")
#root.after(1000,sensores)
def borrar():
canvas.delete("T1")
canvas.delete("T2")
canvas.delete("T3")
def do_update():
ser.write(flagCharacter)
borrar()
allitems=ser.readline(6)
x, y, z = allitems.split()
sensores(x, y, z)
root.after(1000, do_update)
do_update()
root.mainloop()
Любые идеи о том, почему он обновляет функцию случайного, а не информация из моего датчики?
Вы проделали какую-либо отладку, например, вставив инструкцию печати в 'sensores', чтобы убедиться, что она получает значения, которые, по вашему мнению, они должны получать? –
@BryanOakley Я только что увидел выход arduino на серийном окне и использовал print x, y, z после allitems = ser.readline (6). И они получают правильные ценности. Но он не обновляет значения на canvas.create_text –
@BryanOakley Я нашел что-то интересное, он просто передает правильную информацию, когда серийное окно arduino открыто. Для меня это не имеет никакого смысла, но работает. Вы знаете, почему? –