Serial Port Cable Unplugged

8

In dem SerialPort-Objekt von .Net gibt es eine Möglichkeit festzustellen, ob ein serieller Port ausgesteckt oder gesteckt wird.

    
maxfridbe 29.06.2009, 19:17
quelle

7 Antworten

14

Im Gegensatz zu USB verfügt der serielle Port über keine integrierte Möglichkeit, eine physische Änderung des Verbindungsstatus zu erkennen. Eine begrenzte Form der "Geräte bereit / nicht bereit" -Signalisierung kann mit einigen der Pins (nämlich DTR, DSR und manchmal DCD) erfolgen, aber das scheint nicht genau das zu sein, wonach Sie suchen (es ist nicht eingebaut) zu RS232 - das Gerät muss es unterstützen, Sie verwenden es hauptsächlich, um mit Modems zu sprechen.)

Kurz gesagt: Nein, im allgemeinen Fall. Wenn Sie das Gerät, mit dem Sie kommunizieren wollen, programmieren können und wissen, dass es eine bestimmte Zeile hoch halten wird (zum Beispiel), könnten Sie es abfragen, um zu sehen, dass diese Zeile hoch geht. Aber wenn man ein Gerät anschliesst, das nicht programmiert ist, etwas Vorhersagbares zu tun, dann gibt es wirklich keine Möglichkeit es zu sagen. (Einige Geräte halten DSR standardmäßig hoch, aber es ist in keiner Weise eine sichere Wette.)

    
andersop 29.06.2009, 19:29
quelle
2

Die meisten seriellen Geräte haben eine Art von Quittierung auf eine Abfrage. Senden Sie einfach eine einfache Abfrage und warten Sie auf die Antwort. Wenn Sie es nicht verstehen, ist das Gerät nicht da oder reagiert zumindest nicht.

    
Jim C 29.06.2009 19:34
quelle
1

Ich habe es nicht ausprobiert, aber sieh dir den SerialPort an. PinChanged und DsrChanged .

Immer wenn ein normales Gerät an den seriellen Port angeschlossen und eingeschaltet ist, würde ich erwarten, dass der DSR-Pin des Ports aktiviert wird; und umgekehrt, wenn das Gerät ausgesteckt ist oder wenn es ausgeschaltet ist, würde ich erwarten, dass sich der DSR-Pin-Status ändert / abfällt.

Die übliche Bedeutung der verschiedenen Pins ist:

  • DSR: Gerät ist angeschlossen und eingeschaltet
  • CTS: Das Gerät ist bereit, Daten zu empfangen (dies kann auch dann der Fall sein, wenn ein Gerät eingesteckt ist, z. B. wenn das Gerät über einen begrenzten integrierten Puffer verfügt und diesen Pin verwendet, um die Datenübertragung vom PC zu steuern) / li>
  • DCD: Gerät (Modem) hat eine Verbindung über die Telefonleitung zu einem anderen Modem hergestellt (so wird alles, was Sie senden, als Daten behandelt, die an das entfernte Modem übertragen werden sollen)

Von diesen ist der, der Ihr OP beantwortet, DSR.

    
ChrisW 29.06.2009 19:28
quelle
1

There ist eine Möglichkeit, die Entfernung / Einfügung serieller Ports in .NET zu erkennen - siehe meine Antwort unter Erkennen des Einfügens / Entfernens der seriellen Schnittstelle

    
Pat 24.11.2010 17:50
quelle
1
%Vor%     
Christopher Aicher 09.04.2016 21:19
quelle
0

Sie können die verfügbaren seriellen Anschlüsse erkennen, und Sie können versuchen, mit ihnen in einem try ... catch-Block zu kommunizieren.

Dies ist ein Beispiel für die Erkennung von Ports in c #

%Vor%     
Jonathan 29.06.2009 19:22
quelle
0

Es hängt davon ab, welche Art von Gerät Sie mit welcher Art von Kabel verbinden.

Am besten versuchen Sie, den PinChanged-Ereignishandler zu behandeln.

Einige Geräte werden DSR erhöhen, wenn sie angeschlossen und eingeschaltet sind, andere CTS, andere verwenden diese zum Handshaking.

    
Joe 29.06.2009 19:32
quelle

Tags und Links