Erstellen Sie Null Modem Pair Linux

7

Ich möchte virtuelle serielle Ports auf Debian 6 Squeeze erstellen. Grundvoraussetzungen sind:

  1. in der Lage sein, eine Verbindung herzustellen, als ob der Port ein echter serieller Port wäre (IE kann Baud, Stoppbits usw. setzen)

  2. COM-Port-Paare müssen persistent sein

  3. Die Namen der COM-Port-Paare müssen beim Neustart statisch sein. Ich möchte die Codeeinstellungen nicht bei jedem Neustart des Computers ändern

Ich habe heute kurz versucht, socat mit socat -d -d pty, raw, echo=1 pty, raw, echo=1dem erfolgreich erstellten /dev/pts/5und /dev/pts/6als Paar zu verwenden. Sobald ich jedoch das Terminal schließe, das socat ausführt, wird das Paar beendet. Ich frage mich auch, ob tty0tty eine Option ist? Ich habe in der Vergangenheit com0com mit Windows mit großem Erfolg verwendet.

Meine Frage ist, wie ich am besten ein Nullmodempaar erstellen kann, damit ich unter Linux mehrere COM-Ports simulieren kann.

Richard
quelle
Was versuchst du wirklich zu tun? Den meisten Programmen ist es egal, ob sie an eine serielle Schnittstelle, ein tty, eine Pipe oder einen Netzwerk-Socket angeschlossen sind.
Psusi
Ich habe mehrere Sensoren, an die ich mich anschließen werde. Im Moment habe ich keine physischen Sensoren, daher muss ich mit Beispieldaten simulieren. Die Sensoren werden an eine serielle Schnittstelle angeschlossen, daher versuche ich, alles so ähnlich wie möglich zu halten. IE in der Lage sein, Baud zu setzen, Bits zu stoppen, etc.
Richard

Antworten:

5

Wenn Sie das Terminal schließen, töten Sie auch socat.

Versuchen Sie es mit

socat -d -d pty, raw, echo=1 pty, raw, echo=1 &
disown

Dann sollten Sie das Terminal schließen können

Kotte
quelle
1

Stoppbits existieren nur, wenn Sie einen tatsächlichen UART haben, sodass dort nichts zu simulieren ist. Die Baudrate ist einfach die Obergrenze für die Geschwindigkeit, mit der Sie Daten übertragen können. Wenn Sie also Ihr Simulationsprogramm schreiben, müssen Sie lediglich die Datenrate auf die entsprechende Geschwindigkeit begrenzen. Dann können Sie den Simulator mit einer einfachen alten Pipe oder einem Fifo an das konsumierende Programm anschließen.

Es gibt keinen Grund, sich mit einer Pseudo-Tty zu beschäftigen, da sie mit der Baudrate und anderen Parametern eigentlich nichts anfangen, sondern sie nur aus Gründen der Abwärtskompatibilität weitergeben.

psusi
quelle
1

Ich denke, diese Lösung wird nicht "dauerhaft" sein, aber Namen werden statisch sein, obwohl sie symbolisch sind. socat läuft dank der Antwort von Kotte weiter, nachdem das Terminal geschlossen wurde

socat -d -d PTY,link=/home/someuser/COM0 PTY,link=/home/someuser/COM1 & disown
Richard
quelle