Tkinter -Verzögerung, wenn Daten von Arduino mit einem seriellen Modul empfangen werdenPython

Python-Programme
Anonymous
 Tkinter -Verzögerung, wenn Daten von Arduino mit einem seriellen Modul empfangen werden

Post by Anonymous »

Ich versuche, Daten von Arduino mit einer einfachen Schleife zu empfangen und Daten alle 100 ms zu senden. Ich versuche, dasselbe mit Tkinter zu ziehen und es auf Leinwand anzuzeigen. Aber die Daten sind verzögert. Ich habe auch Warteschlangen und Thread versucht, aber immer noch tritt das gleiche Problem auf. Ich bitte den Benutzer, Port Nr. die mit der Schaltfläche Eingabetaste gesammelt und an die Funktion fetch_data übergeben

Code: Select all

from queue import Queue
from threading import Thread
import serial
import tkinter as tk

queue = Queue()
port_no = 0

def fetch_data(queue):
global port_no
while True:
data = serial.Serial(port=F"com{port_no}", baudrate=250000)
while data.in_waiting == 0:
pass
data = data.readline()
data = str(data, "UTF-8")
queue.put(data)

# function for after loop
def display_data():

data = queue.get()
my_canvas.itemconfig(my_text, text=f"{data}")
window.after(100, display_data)

def get_data():
global port_no
port_no = comp_entry.get()
Thread(target=fetch_data, args=(queue,), daemon=True).start()

window = tk.Tk()
window.title("ISS Position")
window.config(padx=50, pady=50)
window.minsize(300, 300)

my_canvas = tk.Canvas(height=300, width=300, highlightthickness=0)
my_canvas.grid(column=0, row=0, padx=10, columnspan=2)
my_text = my_canvas.create_text(150, 150, text="Arduino data", font=("arial", 16, "bold"))

comp_entry = tk.Entry(width=6, font=("arial", 16, "bold"))
comp_entry.grid(column=0, row=1, pady=10)

comp_text = tk.Label(text="Enter Comp port", font=("arial", 16, "bold"))
comp_text.grid(column=1, row=1)

start_button = tk.Button(text="Start", command=display_data, font=("arial", 16, "bold"))
start_button.grid(column=0, row=2, pady=10)

connect_button = tk.Button(text="Enter", command=get_data, font=("arial", 16, "bold"))
connect_button.grid(column=1, row=2)

window.mainloop()

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post