Verbindung zu einem seriellen Gerät über TCP-Socket

2109
oddy

Mein Setup ist folgendes:

  • serielles Gerät ttyUSB0 an Laptop A angeschlossen
  • Software, die TCP-Socket zum Abhören und Schreiben öffnet, läuft auch auf Laptop A (Linux)

Mein Ziel ist es, Daten von / zu einem seriellen Gerät ttyUSB0 an / von einer Software weiterzuleiten, die auf TCP hört und schreibt.

Ich habe versucht, Socat dafür zu nutzen. Mögen,

socat -d -d -d -d -x TCP-LISTEN:7757,reuseaddr,fork FILE:/dev/ttyUSB0,b9600,raw 

Da die Software jedoch auf demselben Laptop läuft, handelt es sich nicht um eine Remote-Verbindung. Die Software kann den Socket an Port 7757 nicht öffnen und schlägt mit "Adresse bereits verwendet" fehl.

Wie kann ich dann mein Ziel erreichen? Dh wie kann meine Software, die Socket an einem Port öffnet, Daten empfängt und an ein serielles Gerät sendet, ohne selbst eine Software zu verändern?

2
Es hört sich an, als ob Ihre Software auch versucht, den Port zu hören. James Roth vor 10 Jahren 0
@JamesRoth Es ist. Es wird versucht, ein Socket zu erstellen, in das listent und schreiben soll. Aber es kann nicht, da es von socat besetzt ist. Was ist zu tun, um meine Aufgabe zu erfüllen? oddy vor 10 Jahren 0
Aus Sicht von C ruft socat, der als Server fungiert, socket (), bind (), listen () und accept () auf. Das kann der Kunde auch nicht. Es ruft socket () auf und dann connect (). Ich habe das Gefühl, dass beide Programme versuchen, der Server zu sein. Können Sie uns mehr über Ihre Software erzählen? James Roth vor 10 Jahren 0
@JamesRoth Es ist absolut korrekt. Software öffnet ServerSocket und wartet auf Port 7758. Software hat auch einen Client-Socket, der mit dem Server (gui) verbunden ist. Ich wusste nicht, dass socat auch als Server funktionieren wird. Ich hoffe, dass diese Antwort von SO http://stackoverflow.com/a/20122074/368264 mir bei meinem Problem helfen wird. Ich könnte das in 7 Stunden überprüfen. oddy vor 10 Jahren 0

0 Antworten auf die Frage