es geht hier um eine serielle uebertragung mittels 2 usb2serial-wandler
das Sendeteil soll eine uP-Schaltung emulieren.
hier verwendet: mini-usb-uart-umsetzer UM2102 von elv
die beiden teile sind mit txd<-->rxd und rxd<-->txd und gnd verbunden.
ascizeichen (<127) werden korrekt uebertragen,
aber umlaute verursachen einen abbruch
was ist hier nicht richtig, dass umlaute nicht funzen
fehlermeldung bei empfangs-programm:
print(rec.decode('utf-8'),end='')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: unexpected end of data
und beide kurzprogramme, die natuerlich getrennt laufen muessen (2 Dateien)
Code: Alles auswählen
# sendeprogram
import serial
portx="COM4" #usb2serial
ser1=serial.Serial(portx,baudrate=38400,
bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, timeout=None, xonxoff=False,
rtscts=False, writeTimeout=None,
dsrdtr=False, interCharTimeout=None)
while tuesenden:
tosend=input("eingabe bis CR >> ")
tosend=tosend+'\n'
if tosend=="exit":
tuesenden=False
ser1.write(tosend.encode('utf-8'))
Code: Alles auswählen
#########################################################
#empfangs-program
import serial
portx="COM3" #usb2serial
ser1=serial.Serial(portx,baudrate=38400,
bytesize=serial.EIGHTBITS, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, timeout=None, xonxoff=False,
rtscts=False, writeTimeout=None,
dsrdtr=False, interCharTimeout=None)
while True:
rec=ser1.read()
print(rec.decode('utf-8'),end='')
vermute dass das sendeteil aus dem umlaut mehr bytes macht und das empfangsteil es nicht zusammensetzen kann,
bin aber mit meinem latein am ende.
(warten bis der ganze string bis cr uebertragen ist und dann erst wieder ausgeben ist suboptimal.)
mit freundlichem Gruss
Fritz