Seite 1 von 1

Prüfen, ob Gerät an serieller Schnittstelle angeschlossen

Verfasst: 29.10.2008 17:44
von Andi
Hallo! Ich habe einen Olympus-Fußschalter an meine serielle Schnittstelle angeschlossen - die Steuerung funktioniert mit dem von mir geschriebenen Programm einwandfrei. Wenn ich den Fußschalter allerdings nicht angeschlossen habe, gibt es Probleme. Gibt es eine Möglichkeit abzufragen, ob an einer seriellen Schnittstelle ein Gerät angeschlossen ist, sodass ich eine entsprechende Abfrage in mein Programm einbauen kann?

Verfasst: 29.10.2008 18:40
von hardfalcon
Für dem normalen COM-Port gibt es das meines Wissens nicht (weil der COM-Port, anders als z.B. USB, ja nie für Hot-Plugging konzipiert wurde).

Verfasst: 29.10.2008 19:46
von Thorium
Vieleicht hilfts dir ja weiter:
Ich hatte früher mal mit Turbo Basic einen Chat programmiert der übers Nullmodem Kabel über die serielle Schnittstelle lief. Das interessante daran war, das wenn ich was an der Schnittstelle angeschlossen hatte, z.b. ne Maus, immer ein Echo zurückkam.

Verfasst: 30.10.2008 10:48
von Andi
Danke, Thorium, für Deine Antworten. Ich weiß jetzt nicht, wie ich das Echo detektieren kann, aber ich habe festgestellt, dass im Fall, dass der Fußschalter nicht angeschlossen ist, der RI, DCD, DSR und CTS-Signal-Status false ist. Wenn der Fußschalter angeschlossen ist, springen DCD, DSR und CTS auf true.

Verfasst: 30.10.2008 11:30
von THEEX
Die einzige Möglichkeit, die mir jetzt dazu ein fällt, so wird es bei vielen Geräten gemacht, ist eine Statusabfrage. Man schickt einen Befehl (zB: Status oder Version - ist Geräteabhängig) und man wertet die die Rückantwort aus. Kommt eine, oder ist diese korrekt, ist das Gerät angeschlossen... ^^

Verfasst: 02.11.2008 22:10
von Keepdry
Auch bei der Statusabfrage kann es sein das anschliessend die Schnittstelle hängt.
Es ist aber ungewöhnlich das die Hardware Handshake auf hi liegen.
Bei Maschinen die als reine Slave arbeiten werden die Handshake´s oft über Brücken künstlich auf hi gesetzt. Beispiel Brücke :

Host----------------Slave
RTS ->
         |----------->DCD
CTS<-
RTS wird nach Com Init. Hi und bedient gleich auch CTS und setzt DCD (Receive line signal detector) hi. Die gleiche Brücke ist auch beim Slave.
Sprich, dem Slave sein DCD ist nur hi wenn ein Host angeschlossen ist.
Also Com initialisieren, DCD Abfragen, ist DCD low = nix angeschlossen, Com wieder schliessen, FM ausgeben. Ist DCD hi = mach das was du willst. Wenn du anschliessend auch noch Hardware Handshake machen willst musst du diesen über DTR, DSR bedienen.

Verfasst: 02.11.2008 22:19
von THEEX
Wenn man mit Master und Slave arbeitet, wird in der Regel RS 485 genutzt... In der Regel ist eine Adressierung für die Commandos vorgesehn.

Verfasst: 02.11.2008 22:59
von Keepdry
Richtig....
Es wird aber auch über die RS232 als Master Slave kommuniziert. In der Medizintechnik weit verbreitet, Druckmessgeräte, Barcodescanner und einige Sensoren arbeiten so. Mein täglich Brot. :wink:

Verfasst: 03.11.2008 00:50
von THEEX
Über RS232 ist keine Kommunikation mit mehreren Geräten als Master und Slave möglich, zumindest hab ich das irgendwo mal gelesen, find's jetzt aber nicht mehr.

Verfasst: 20.07.2009 09:40
von maupa
rs485 offenes master/slave-protokoll

bei rs232 sind maximal 1 master und 1 slave möglich