GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Woher weiß ich, ob eine serielle Schnittstelle tatsächlich Daten überträgt, ohne das Gerät zu öffnen?

RS232 hat keinerlei Anzeige für "Kabel vorhanden". Sie bekommen nur Übertragungs- oder Metadaten-(Steuer-)Signale durch oder nicht – das ist alles, was Sie wissen. Wenn Sie ein eingehendes Signal (CTS|DSR|CD) empfangen, wissen Sie, dass das Kabel angeschlossen ist. Wenn Sie kein eingehendes Signal empfangen, ist der Zustand des Kabels unbestimmt und es gibt keine Möglichkeit, ohne zusätzliche Hardwarelösungen festzustellen, ob es angeschlossen ist - oder eine Art Austausch mit dem Remote-Gerät durchzuführen.

Der übliche Ansatz besteht darin, eine Art "Keep-Alive"-Übertragung durchzuführen (sogar nur Metadaten - z. B. vorübergehend DTR setzen und CTS erwarten), aber wenn die von der Software an den beiden Enden des Kabels verwendete Protokolldisziplin einen solchen Leerlaufaustausch verbietet, müssen Sie Sie sind ziemlich festgefahren, wenn Sie einen Lötkolben verwenden, um fortzufahren.

Was Sie versuchen könnten, ist eine Art zusätzlicher "Dämon", der eine Pipe einrichtet, Daten zwischen Ihrer Software und dem physischen Gerät (an beiden Enden) weiterleitet, sie kapselt - und "Verbindungsprüfungen" durchführt, wenn die Pipe im Leerlauf ist.

Lassen Sie mich eine ziemlich häufige Lösung hinzufügen:Wenn Ihr Endpunktgerät keine Hardwaresteuerung verwendet, können Sie DTR mit CTS im Stecker auf der Hostseite kurzschließen und „Hardwaresteuerung“ auf der Hostseite verwenden. Das Generieren von DTR treibt automatisch CTS an und ermöglicht die Übertragung, wenn das Kabel vorhanden ist, sodass die Übertragung nicht beeinträchtigt wird. Währenddessen reagiert das System bei fehlendem Kabel auf einen Mangel an CTS in einer Weise, die diesem Ereignis angemessen ist, z. Generieren eines Timeouts oder Unterbrechen der Übertragung, bis das Kabel eingesteckt wird.


Linux
  1. Wie sende ich Daten an eine serielle Schnittstelle und sehe eine Antwort?

  2. Linux – Woher kennt der Linux-Kernel Geräte-Major- und Minor-Nummern?

  3. Wie finde ich alle seriellen Geräte (ttyS, ttyUSB, ..) unter Linux, ohne sie zu öffnen?

  4. Wie öffne ich die serielle Schnittstelle unter Linux, ohne einen Pin zu ändern?

  5. Woher weiß ich, welches /dev/ttyS* meine serielle Schnittstelle ist?

So finden Sie die Portnummer eines Dienstes in Linux

Wie man die Gruppen eines Linux-Benutzers kennt

So ändern Sie den SSH-Port in CentOS

Wie kann ich Daten an einer seriellen Schnittstelle in Linux überwachen?

Wie kann ich die Paritätsbits einstellen, wenn ich den Bildschirm verwende, um auf eine serielle Schnittstelle zuzugreifen

Wie bestimme ich die Baudrate einer seriellen Schnittstelle?