Was macht das Öffnen einer seriellen Schnittstelle?

2386
reve_etrange

Was macht das Öffnen der seriellen Standard-PC-Schnittstelle in elektrischer Hinsicht (dh welche Spannungen an welchen Pins)?

Zum Beispiel das alte VB6-Programm, das einen Apparat steuert, für den ich die Aufrechterhaltung von Umschaltfunktionen .PortOpenzur Steuerung einiger TTLs habe. Die Verbindung verwendete nur 2 Pins (schlechte Lote fielen auseinander), also welche Pins löte ich?

Die einzigen Beschriftungen / Dokumentationen beziehen sich auf die Pins 7 und 9 und sagen 0V und 5V in Klammern aus, setzen aber .PortOpenwirklich nur 5V zwischen RI und RTS ?.

Als Post-Skript ist dies nicht das Seltsamste an der Einrichtung. Die oben erwähnte TTL I ist auch über einen BNC mit DB9 (!) Verbunden, wobei nur 1 Pin verwendet wird. Ich vermute, es gab eine Annahme über eine gemeinsame Masse, da die BNC-Abschirmung nicht mit dem GND-Pin verbunden ist. Der Anschluss erfolgt über den Fußpedal-Pin des Instruments, um das Gerät aus der Ferne auszulösen.

Aktualisieren

Nach dieser Seite, die DTR und RTS Stifte können hoch gehen, wenn der Port geöffnet wird. Wenn sie so konfiguriert wurden, gehen sie nach dem Schließen des Ports auf Low.

Wenn DTR und RTS nicht aktiviert sind, sollten Sie beim Öffnen des Ports beide auf niedrig setzen (und sie niedrig halten).

4
TTL? Durch die Linse? Transistor-Transistor-Logik? vor 13 Jahren 0
Letzteres. Es ist ein Durchgang, der durch ein Flip-Flop geöffnet und geschlossen wird, das durch Öffnen / Schließen des seriellen Anschlusses umgeschaltet wird. reve_etrange vor 13 Jahren 0
@reve_etrange: Ich habe mich gefragt, weil serielle Ports nicht TTL-Level sind. Sie können sie also nicht direkt verbinden. Ich dachte, du meinst etwas anderes. vor 13 Jahren 0
@Federico Russo, in meinen eingebetteten Anwendungen und beim Debuggen verwende ich häufig UARTS auf TTL-Ebene ohne Treiber. Hat nicht jeder eine dieser http://www.ftdichip.com/Products/Cables/USBTTLSerial.htm? kenny vor 13 Jahren 0
@kenny: OP sagt, er ist auf einem PC und dort geht ein serieller Port von -12V auf + 12V. vor 13 Jahren 0
@Federico Russo, nicht unbedingt, Sie können einen PC mit integriertem RS232 nicht mehr finden. Siehe den von mir bereitgestellten Link http://ftdichip.com/Products/Cables/USBTTLSerial.htm. kenny vor 13 Jahren 0

3 Antworten auf die Frage

8
stevenvh

Das Öffnen des Ports macht elektrisch nichts. Es teilt dem Betriebssystem lediglich mit, dass der Port ab diesem Zeitpunkt der Anwendung zugewiesen ist. Das Betriebssystem verweigert anderen Apps den Zugriff auf den Port, während der von Ihnen geöffnet ist, und Ihre App kann darauf zugreifen.

Das macht Sinn. Sowohl die serielle Kommunikation als auch die Windows-Programmierung liegen außerhalb meines Fachwissens. reve_etrange vor 13 Jahren 0
Und auf einigen Betriebssystemen kann es immer noch geteilt werden, aber durch die Absicht des Programmierers ist die Entscheidung möglicherweise fehlerhaft. kenny vor 13 Jahren 0
Ich habe die Antwort nicht markiert, da klar ist, dass andere Dinge passieren können, wenn der Port geöffnet ist. Entschuldigung für die Achterbahn. reve_etrange vor 13 Jahren 0
Ist dies auf jeden Fall das Verhalten auf Nicht-Windows-Betriebssystemen? reve_etrange vor 13 Jahren 0
6
supercat

Wenn Sie einen seriellen Port öffnen, werden alle Pins in einen definierten Zustand gebracht (ich kann mich nicht erinnern, welche Handshake-Zeilen standardmäßig mit Markierungen oder Abständen belegt sind, aber es ist Standard). Bis zum Öffnen der seriellen Schnittstelle kann der Status der Leitungen undefiniert sein. Wenn Microsoft nichts geändert hat, würde das Schließen einer seriellen Schnittstelle die Leitungen in dem Zustand belassen, in dem sie sich vor dem Schließen befanden. Wenn das zuletzt verwendete Programm sie in einem seltsamen Zustand belässt, bleiben sie in diesem Zustand, bis sie das nächste Mal geöffnet werden. Ich weiß auch nicht, ob dies unter Windows immer noch ein Problem ist, aber unter DOS gab es einige PCs, die ihre seriellen Anschlüsse beim Einschalten in einen doof-Zustand versetzten. Mindestens eine PC-Marke würde ihre serielle Schnittstelle so einstellen, dass sie fortlaufend lange Unterbrechungen überträgt, sofern dies nicht anders angegeben wird.

Macht es etwas anderes als RTS und DTR je nach Konfiguration auf niedrig / hoch zu setzen? Dh sind alle Pins auf "Open" gesetzt, senden einige ununterbrochen, usw.? reve_etrange vor 13 Jahren 0
1

Ich stimme der Antwort von @Stevenvh nicht zu. Insbesondere für Fenster. Die API-Aufrufe "Port Open" und "Port Close", z. B. in .NET oder MSCOMM OCX, zwingen DTR- und RTS-Leitungen, ihren Zustand elektrisch zu ändern oder nicht.

Bei geöffnetem Port wird der DTR in den elektrischen Zustand versetzt, der der booleschen Eigenschaft DTREnable entspricht, wenn er vor dem Öffnen des Ports auf "true" gesetzt wurde. Standardmäßig bleibt es "false". Wenn der Benutzer niemals DTREnable setzt, bleibt die DTR-Zeile auf "open port" auf "false" wie vor dem Öffnen des Ports.

Gleiche Logik und Standardeinstellungen für Leitungsnamen "RTS" und Eigenschaft "RTSEnable". Sie wählen "RTSEnable" vor dem Öffnen des Ports, abhängig vom Kommunikationspartner am anderen Ende des Kabels und der Anzahl der betroffenen Drähte (Hadware-Handshake vs. Software-Handshake vs. kein Handshake).

  • Datenträger erkennen - wird eingegeben, kein Effekt
  • Daten empfangen - wird eingegeben, keine Auswirkung
  • Daten übertragen - wird ausgegeben, bleibt "SPACE" statt "MARK"
  • Datenendgerät bereit - wechselt zu "TRUE", wenn die Eigenschaft vor "Port open" festgelegt wurde
  • Signalmasse - keine Änderung
  • Datensatz bereit - wird eingegeben, keine Auswirkung
  • Request to send - ändert sich in "TRUE", wenn die RTSEnable-Eigenschaft vor "Port Open" festgelegt wurde
  • Clear to send - ist Eingabe, kein Effekt
  • Ruftonanzeige - wird eingegeben, kein Effekt

Umgekehrt, wenn der Port geschlossen ist. Die Pins DTR und RTS wechseln in den Zustand "FALSE" oder bleiben im Zustand "FALSE", wenn sie nicht zum Zeitpunkt der Öffnung durch die Eigenschaften gesetzt wurden.

Wie wäre es mit den anderen Pins (außer DTR und RTS)? reve_etrange vor 13 Jahren 0
Der Ausgangsdaten-Pin des PCs bleibt im Status "SPACE" und nicht im Status "MARK". Andere Pins sind Eingangspins, daher ändern sie sich nicht (Ringanzeige, Trägererkennung, Löschen zum Senden, Dateneingabe). vor 13 Jahren 0
Super, danke! Mit "stay" SPACE / MARK meinen Sie, dass der Port beim Schließen des Ports in einen geräteabhängigen undefinierten Status zurückgesetzt wird. reve_etrange vor 13 Jahren 0
Ja. Aber SPACE / MARK kann als "definiert" behandelt werden, ich meine vorhersagbare Spannung. Sya in TTL "SPACE" ist "FALSE", ist null Volt oder MARK ist "WAHR" ist +5 Volt. Bei RS-232 ist SPACE jedoch + 12V und MARK -12V. vor 13 Jahren 0
"* Daten übertragen - wird ausgegeben, bleibt" SPACE "anstelle von" MARK "*" - Eine freie RS-232-Datenleitung wird bei einer negativen Spannung ** MARKING ** sein. sawdust vor 12 Jahren 0