Transmisión continua de datos de Arduino a Python

Estoy tratando de obtener una ventana GUI de Python usando Tkinter para mostrar continuamente la transmisión de datos desde un Arduino Uno Tablero que actúa como un voltímetro. Con el código que tengo, la ventana mostrará un punto de datos y, una vez que se cierre la ventana, se abrirá una nueva ventana con el siguiente punto de datos disponible. Aquí está el código que he estado usando:

import serial
from Tkinter import *
ser = serial.Serial('/dev/tty.usbmodem621')
ser.baudrate = 9600
while 1 == 1:
    reading = ser.readline()
    root = Tk()
    w = Label(root, text = reading)
    w.pack()
    root.mainloop()

Estoy usando un MacBook Pro, y la pySerial paquete para mis comunicaciones seriales. ¿Cómo hago para que la ventana se actualice sola?

preguntado el 29 de junio de 12 a las 19:06

1 Respuestas

Creo que el problema es que estás creando una nueva raíz para cada iteración de bucle. Prueba este código:

import serial
from Tkinter import *
from time import sleep
ser = serial.Serial('/dev/tty.usbmodem621')
ser.baudrate = 9600

def update():
    while 1:
        reading.set(ser.readline())
        root.update()
        sleep(1)

root=Tk()
reading = StringVar()

w = Label(root, textvariable = reading)
w.pack()

root.after(1,update)    
root.mainloop()

Esto configura el "bucle principal" para llamar a la función "actualizar" después de un milisegundo y usa una referencia a la variable "lectura" en lugar del valor real de la misma, lo que permite que se actualice.

Espero que esto ayude.

Respondido 02 Jul 12, 20:07

Me ayudó bastante, gracias. Lo único que se necesitaba hacer de manera diferente era definir la variable 'lectura', así que lo hice después de definir 'actualizar' y el código funciona exactamente como esperaba. - user1491466

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.