Nico Hoffmann
2020-12-09 22:13:43 UTC
Hallo,
ich brauche eine Art Gateway zwischen zwei seriellen Schnittstellen,
konkret zwischen /dev/ttyS0 (das ist die RS232) und /dev/ttyUSB0
(dahinter hängt ein spezieller USB-Seriell-Adapter mit FTDI-Chip).
Es sollen kurze (ca 5 - 20 Byte) Datentelegramme bidirektional
übertragen werden.
Ich habe nun versucht, mir was in C zu basteln. Mein Ansatz ist im
groben, die beiden Devices RW zu öffnen und dann zwei Threads zu
starten, an die ich die "File"handles für die Schnittstellen
weitergebe. Der eine Thread liest RS232 und schreibt USB, der zweite
Thread liest USB und schreibt RS232.
Für die beiden Threads starte ich einunddieselbe Funktion zweimal, nur
mit Quell/Ziel-Handle vertauscht.
Mein Programm läßt sich fehlerfrei kompilieren und starten, aber es
funktioniert nur in einer Richtung. D.h. ich kann per RS232 etwas
einfüllen, was über USB rausgeschrieben wird, aber wenn auf USB etwas
ankommt, wird es nicht nach RS232 durchgereicht, bzw. es wird vom
Programm offenbar gar nicht eingelesen.
Ich weiß aber sicher, dass auch über USB etwas ankommt.
Für mich ist das alles neu, ich habe mir den Code aus dem Internet
zusammenkopiert.
Vielleicht zunächst eine grundsätzliche Frage, bevor ich Code wälze:
Ist meine Herangehensweise überhaupt sinnvoll, oder geht das
geschickter, einfacher, etc?
N.
ich brauche eine Art Gateway zwischen zwei seriellen Schnittstellen,
konkret zwischen /dev/ttyS0 (das ist die RS232) und /dev/ttyUSB0
(dahinter hängt ein spezieller USB-Seriell-Adapter mit FTDI-Chip).
Es sollen kurze (ca 5 - 20 Byte) Datentelegramme bidirektional
übertragen werden.
Ich habe nun versucht, mir was in C zu basteln. Mein Ansatz ist im
groben, die beiden Devices RW zu öffnen und dann zwei Threads zu
starten, an die ich die "File"handles für die Schnittstellen
weitergebe. Der eine Thread liest RS232 und schreibt USB, der zweite
Thread liest USB und schreibt RS232.
Für die beiden Threads starte ich einunddieselbe Funktion zweimal, nur
mit Quell/Ziel-Handle vertauscht.
Mein Programm läßt sich fehlerfrei kompilieren und starten, aber es
funktioniert nur in einer Richtung. D.h. ich kann per RS232 etwas
einfüllen, was über USB rausgeschrieben wird, aber wenn auf USB etwas
ankommt, wird es nicht nach RS232 durchgereicht, bzw. es wird vom
Programm offenbar gar nicht eingelesen.
Ich weiß aber sicher, dass auch über USB etwas ankommt.
Für mich ist das alles neu, ich habe mir den Code aus dem Internet
zusammenkopiert.
Vielleicht zunächst eine grundsätzliche Frage, bevor ich Code wälze:
Ist meine Herangehensweise überhaupt sinnvoll, oder geht das
geschickter, einfacher, etc?
N.
--
Mephisto war kein Sachse.
Mephisto war kein Sachse.