Hier ist die zweite Version des Python3 Empfangs Programms.
Der Empfang der seriellen Daten des Arduinos ist in diesem Programm in einen separaten Thread ausgelagert, wodurch die Möglichkeit besteht im Hauptprogramm weiterhin mit dem Benutzer zu Interagieren.
Python3 Code
#!/usr/bin/python3 # Module import serial import time, _thread import os # Thread für seriellen Empfang def empfang(): # Werte Variable durch global bekanntmachen global werte id = _thread.get_ident() print("Empfangs-thread läuft, id={0}.".format(id)) while 1: try: werte = ser.readline().decode().split(';') except: print("Lesefehler in Thread", id) # Hauptprogramm # Seriellen Port Konfigurieren: ser = serial.Serial() # Hier den passenden Port angeben ser.port = 'COM5' if os.name=='nt' else '/dev/ttyACM0' ser.baudrate = 9600 ser.timeout = 1 # Port öffnen try: ser.open() print("Port geöffnet") except: print("Konnte Port nicht öffnen") exit(0) # Globale Variable für die Werte werte = 0 # Empfangs-Thread starten _thread.start_new_thread(empfang,()) time.sleep(0.5) while 1: print("Was möchten sie machen ?\n[1] Aktuelle Werte Anzeigen\n[2] Beenden") antwort = input() # Bildschirm Löschen os.system('cls' if os.name=='nt' else 'clear') if antwort == '1': # AD Wert (0-1023) umrechnen auf 0-5V. zahl1 = int(werte[0])* 0.00489 zahl2 = int(werte[1])* 0.00489 # Ausgeben der Ergebnisse jeweils mit 3 Nachkommastellen. print("A0= {0:.3f} V A1= {1:.3f} V Mittelwert= {2:.3f} V".format(zahl1, zahl2, (zahl1+zahl2)/2)) elif antwort == '2': print("Ende") exit(0) else: print("Ungültige eingabe.")
Bilder und Downloads

Download: Quellcode und Schaltplan
Links
- Version 1 des Empfangs Programms ohne Threading.
- Infos zu RS232 unter Linux in meinem anderen Beitrag „Linux und RS232“.
- Dieser Beitrag aus kevin’s blog hat mich zu meinem Beitrag hier inspiriert.