Hallo,
ich habe bereits einige serielle Verbindungen über den GPIO-UART und PySerial erfolgreich realisiert.
Jetzt muss ich allerdings ein Gerät via RS232 mit dem Raspi verbinden, weswegen ich mich entschieden habe,
einen USB-Serial Converter zu verwenden.
Für Testzwecke nutze ich zwei USB-RS232 Adapter, welche über einen Nullmodem-Adapter verbunden sind.
Einer der Adapter steckt dabei am Raspi der andere an meinem PC.
Leider bekomme ich bisher keine brauchbare Übertragung zustande, es kommen beim Raspi nicht die Zeichen an,
die ich vom Windows Rechner absende.
Zuerst ging ich von einem Hardwareproblem (fehlendes GND o.ä.) aus, weswegen ich mit den Adaptern mal eine
Verbindung zwischen zwei Windows-PCs hergestellt habe und über EasyTerm Tests gemacht habe. Dabei gelang
mir eine fehlerfreie Kommunikation problemlos. Somit ist das mögliche Hardware-Problem mMn vom Tisch.
Deswegen gehe ich nun von einem Softwarefehler aus, welchen ich allerdings nicht finde.
Noch ein Hinweis: Die Verbindung muss nur unidrektional vom Sender (derzeit PC mit Win10) zum Raspi möglich sein.
Python-Code auf dem Empfänger (Raspi)
import time
import serial
ser = serial.Serial (
port = '/dev/ttyUSB0',
baudrate = 1200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS
)
while(True):
bytestring = bytes("","ascii")
bytestring = bytes(ser.readline())
asciistring = str(bytestring.decode(encoding='ascii'))
print(bytestring)
print("ASCII: " + asciistring)
Alles anzeigen
Python-Code auf dem Sender (Windows-PC)
import time
import serial
ser = serial.Serial(
port='COM4',
baudrate=1200,
parity=serial.PARITY_ODD,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.SEVENBITS
)
while(True):
asciistring = "Hallo\r\n"
bytestring = asciistring.encode(encoding='ascii')
ser.write(bytestring)
time.sleep(5)
Alles anzeigen
Und das kommt alle 5s auf dem Raspi an:
Meiner Meinung nach wird immer die zweite Stelle des Hex-Werts korrekt übertragen und die erste Stelle kommt warum auch immer abhanden.
Hat jemand eine Idee woran das liegen kann?
Die Parameter der seriellen Schnittstelle entsprechen denen des späteren Senders und können somit nicht geändert werden.
Danke für Eure Hilfe.
technikasg