Tech-Ecke / Delphi Inhalt / COM-Port ansteuern

 

     COM-Port ansteuern in QBasic (DOS)


   COM-Port (RS232)

Siehe auch COM-Port (inkl. USB-Adapter) mittels Delphi unter Windows ansteuern.

Im Gegensatz zum LPT-Port bietet der COM-Port weniger Ein- und Ausgänge, welche zum Steuern und Regeln genutzt werden können. Jedoch lassen sich zumindest die Ausgänge mittels Schieberegister beliebig erweitern.

Am COM-Port finden man drei nutzbare Ausgänge am Pin 3, 4 und 7 und vier nutzbare Eingänge am Pin 1, 6, 8 und 9. Der Pin 9 "Ring Indicator" ist nur bedingt nutzbar. Einen High-Pegel (> +3V) quittiert er nur mit einem kurz gepulstem Signal. Wie lange ein Pegel ansteht lässt sich also nicht ermitteln.

     
1 DCD  [E] Data Carrier
2 RxD Receive Data (nicht direkt nutzbar für Hardwarebasteleien)
3 TxD  [A] Transmit Data
4 DTR  [A] Data Terminal Ready
5 GND Masse
6 DSR  [E] Data Set Ready
7 RTS  [A] Request to Send
8 CTS  [E] Clear to Send
9 RI  [E] Ring Indicator

Weitere Infos und eine Testschaltung zum COM-Port gibt es hier


 

  Out(XXX),y  (Ausgang - Datenregister)

Wie auch beim LPT-Port wird mit dem Befehl OUT ein Bit im Steuerregister des COM-Ports gesetzt gesetzt. Dadurch kann man am entsprechenden Pin eine Spannung von +12V messen. Das Steuerregister des COM1 liegt bei Adresse 1020, des COM2 bei 764. TxD liegt eine Adresse unterhalb auf dem Datenregister, also 1019 und 763. Folgende Tabelle zeigt welcher Bit welchen Pin unter Spannung setzt.

OUT(1020/764), 1 2 OUT(1019/763), 64
+12Volt an Pin 2 7   3
Pinbezeichnung DTR RTS   TxD

Syntax um am COM1 DTR (Pin 4) auf High (+12V) zu setzen.

   OUT(1020), 1  'COM1
 OUT(764), 1  'COM2

 OUT(1019), 64  'COM1
 OUT(763), 64  'COM2
 

Um DTR und RTS gleichzeitig zu schalten (Quersumme beider Werte):

   OUT(1020), 3  'COM1
 

Die gesetzten Werte bleiben solange erhalten, bis sie durch einen anderen überschrieben werden. Um alle Ausgänge wieder auf "-12V" zu setzen (alles aus) setzt man "0"

   OUT(1020), 0  'COM1
 OUT(1019), 0  'COM1
 


   INP(
XXX (Eingang)

Um nun Informationen von Außen in den PC und somit in sein eigenes Programm zu schleusen benutzt man die Adresse 1022 bzw. 763.

 

X = INP(1022)  'COM1
X = INP(766)  'COM2

 

Beanschlagt man nun einen oder mehrere Eingangspins des Statusregisters (1, 6,8 und 9) mit +12V so wird sich der Wert der Variablen X entsprechend ändern.

Eingang Pin Spannung Wert
DCD 1 +12V 128
DSR 6 +12V 32
CTS 8 +12V 16
RI 9 +12V 64
alle alle 0V 0

Werden mehrere Pins gleichzeitig beanschlagt, so addieren sich die Werte. z.B. DSR + CTS = 48

 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 25.01.2007]