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.