ich möchte mit Python Daten an die serielle Schnittstelle eines Atmega8 schicken und von dort empfangen. Dafür verwende ich untenstehenden Code. Das Versenden funktioniert einwandfrei aber leider bekomme ich keine Daten eingelesen. Die globale Variable Werte ist immer leer. Das lesen läuft in einem extra thread weil ich ja nicht weiß wann der Atmega etwas verschickt. Der PC muss ständig lesebereit sein.
Ich hatte zuerst ser.readline() gewählt und vom Atmega \n als Abschluss senden lassen, was auch nicht funktionierte.
Die Übertragung vom Atmega funktioniert, dies habe ich mit hterm getestet.
Wäre nett wenn mir jemand weiterhelfen würde. Ich komme leider nicht auf die Lösung.
Gruß
Holger
Code: Alles auswählen
import serial
import time, _thread
def empfang():
global werte
id = _thread.get_ident()
print("Empfangstherad lauft, id={0}.".format(id))
while 1:
try:
werte = ser.read(5).decode('ascii')
except:
print("Lesefehler im Thread",id)
ser.close()
ser = serial.Serial('COM1', 9600, timeout=0, parity=serial.PARITY_NONE, rtscts=0)
werte = 0
_thread.start_new_thread(empfang,())
time.sleep(0.5)
while 1:
print ("Gebe den Befehl ein")
text = input()
ser.write(format(text).encode('ascii')+b'\r\n')
print(werte)
print (len(werte))