Hey, ich habe folgendes Problem:
Ich habe einen Arduino mit einem Raspberry Pi seriell (USB) verbunden.
Der Arduino soll dem RPi unterschiedliche Strings schicken und ein
Python-Programm dann auf diese Strings in einem GUI reagieren:
Ich habe eine kleine Tabelle programmiert, bei der sich dann jeweils die
Zustände von "full" zu "empty" oder umgekehrt ändern sollen.
Leider ändern sich die Zustände aber nicht, sie bleiben leer (""), wie
am Anfang definiert.
gibt die vom Arduino gesendete Nummer richtig aus, die Strings werden
also empfangen.
Die beiden Funktionen müssen parallel laufen, da ich dem UI später noch
andere Aufgaben zuteilen will und dieses Fenster andere Fenster aufrufen
soll, und sich selbst schließen wird.
Ich würde mich freuen, wenn mir jmd. helfen könnte :)
Bin ein ziemlicher Anfänger im programmieren, ich hoffe ihr verzeiht mir
"dumme" Fehler :D
LG
PROGRAMMCODE:
1 | from thread import start_new_thread
|
2 | import threading
|
3 | import time
|
4 | import serial
|
5 | from Tkinter import *
|
6 | LR1 = ""
|
7 | LR2 = ""
|
8 | LR3 = ""
|
9 |
|
10 | def detect():
|
11 | global LR1
|
12 | global LR2
|
13 | global LR3
|
14 | x = 0
|
15 | ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=None)
|
16 | num = ser.readline()
|
17 |
|
18 | while (x == 0):
|
19 | global LR1
|
20 | global LR2
|
21 | global LR3
|
22 | num = ser.readline()
|
23 |
|
24 | if (len(num)>0):
|
25 | print num
|
26 | if (num=="110"):
|
27 | LR1="empty"
|
28 | elif (num=="111"):
|
29 | LR1="full"
|
30 | elif (num=="120"):
|
31 | LR2="empty"
|
32 | elif (num=="121"):
|
33 | LR2="full"
|
34 | elif (num=="130"):
|
35 | LR3="empty"
|
36 | elif (num=="131"):
|
37 | LR3="full"
|
38 |
|
39 |
|
40 | print (LR1, LR2, LR3)
|
41 |
|
42 | time.sleep(0.05)
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | def Fenster():
|
48 | global LR1
|
49 | global LR2
|
50 | global LR3
|
51 | global master
|
52 | master = Tk()
|
53 | master.title("window")
|
54 |
|
55 | Label(master, text= "LR1", height=10, width=10).grid(row=0, column=0)
|
56 | Label(master, text= LR1, height=10, width=10).grid(row=0, column=1)
|
57 | Label(master, text= "LR2", height=10, width=10).grid(row=1, column=0)
|
58 | Label(master, text= LR2, height=10, width=10).grid(row=1, column=1)
|
59 | Label(master, text= "LR3", height=10, width=10).grid(row=2, column=0)
|
60 | Label(master, text= LR3, height=10, width=10).grid(row=2, column=1)
|
61 |
|
62 | master.mainloop()
|
63 |
|
64 | ffenster = threading.Thread(target=Fenster)
|
65 | fdetect = threading.Thread(target=detect)
|
66 |
|
67 | ffenster.start()
|
68 | fdetect.start()
|