VB-Homepage Tipp 403 |
Anregungen zur Schnittstellenprogrammierung |
Wieder mal ein VB-Homepage Besucher, der einen eigenen
Beitrag zum Füllen der Tipp Datenbank leistet. Vielen Dank an René Thalmann der allen
Geplagten seine Erkenntnisse bei der Schnittstellenprogrammierung zur Verfügung stellt. Er schreibt .... Habe die Frage bzw Aufforderung gelesen wegen der Schnittstellen-Programmierung. Mit dieser Thematik plage ich mich nun auch schon Wochen herum. Bin selber dabei div Programme zwecks Messwerte -Verarbeitung zu schreiben von Digital Multimeter mit eingebauter RS-232 Schnittstelle. Grundsätzlich ist folgendes zu sagen um überhaupt ein Gerät ansprechen zu können bzw folgendes Wissen muss vorhanden sein. - wie schnell arbeitet das zu steuernde/übermittelnde Gerät? Bei zB 2 Datensätze pro Sekunde bringt es nichts die Baudrate auf 120'000 zu schrauben - wird ein Paritätsbit verwendet? - wird Handshaking verwendet? Wenn ja, wie (Hardware, Xon-Xoff etc) - wie muss ein Datensatz aussehen (Daten- und Stopbits zB 7,2 oder 8,1) - Welche Leitungen werden verwendet (zB können die Handshake-Leitungen auch zur Stromversorgung von externen Geräten verwendet werden) - wie sieht die Pinbelegung des Gerätes aus? Evtl muss selber ein Kabel gebastelt werden. Hier ein kleiner Beschrieb, wie einzelnen Leitungen heissen und was das bedeutet (Auszug von B. Kunze): Signal 9-polig 25-polig amPC Bedeutung DCD 1 8 Eingang Data Carrier Detect RXD 2 3 Eingang Receive Data TXD 3 2 Ausgang Transmit Data DTR 4 20 Ausgang Data Terminal Ready GND 5 7 Erde Ground DSR 6 6 Eingang Data Set Ready RTS 7 4 Ausgang Ready To Send CTS 8 5 Eingang Clear to SendRI922EingangRing Indicator Spannungspegel Bei den Steuerleitungen DCD, DTR, DSR, RTS, CTS und RI wird der inaktive Zustand (0) durch eine Spannung von -15...-3 V dargestellt, der aktive Zustand (1) dagegen durch +3...+15 V. Bei den Datenleitungen RXD und TXD ist die Spannungslage umgekehrt; sie liegen im Ruhezustand (1) auf negativem Pegel. Spannungswerte zwischen -3 V und +3 V gehören zum "verbotenen" Bereich, weil hierbei keine eindeutige Zuordnung mehr gewäh- rleistet ist. Am COM-Port eines PC werden im Leerlauf typisch etwa +/- 10 V erreicht, bei Laptops der neuen Gerneration auch weniger. Alle Ein- und Ausgänge sind kurzschlußfest, aber nicht gegen Überspannungen abgesichert. Zu hohe Eingangsspannungen können die Ports möglicherweise beschädigen. Handshake (im Verbund mit einem Modem, kann aber praktisch für alles übernommen werden) Eine Datenübertragungs-Applikation legt nach dem Start die Leitungen DTR und RTS auf 1 (+12 V) und zeigt zB dem Modem damit die Funktionsbereitschaft an. Da das Modem die Daten aber eventuell nicht so schnell senden kann, wie sie die Applikation sendet, legt es die CTS-Leitung auf 0 (-12 V), wenn es gerade keine weiteren Daten vom PC entgegennehmen kann, und dann wieder auf 1 wenn es wieder neue Daten entgegennehmen kann. Umgekehrt kann der PC, wenn er gerade zu beschäftigt ist, die Daten vom Modem entgegennehmen zu können, seine RTS-Leitung vorübergehend auf 0 legen. Dieses Verfahren nennt man RTS/CTS-Handshake oder auch Hardware-Flußkontrolle. (Ein alternatives Verfahren, das ohne Steuerleitungen auskommt, benutzt die beiden Steuerzeichen Xon/Xoff, ist aber wegen dieser zwei reservierten Codes nicht für eine Binär-Übertragung geeignet und deshalb gewöhnlich weniger sinnvoll). Datenübertragung Die Daten selbst werden beim COM-Port eines PC asynchron übertragen. Das bedeutet, ein Zeichen kann zu einem beliebigen Zeitpunkt gesendet werden. Der Anfang einer Übertragung wird an einem Pegelwechsel von 1auf 0 erkannt (Startbit). Dann folgen je nach Einstellung die typischerweise sieben oder acht Datenbits, das niederwertigste Bit wird zuerstgesndet. Den Abschluß bildert das Stoppbit, - das immer eine 1 darstellt. Dies ist deshalb sinnvoll, damit für ein nachfolgend gesendetes Zeichen das Startbit wieder als Übergang von 1 auf 0 erkannt werden kann. Die Dauer eines Bits ist der Kehrwert der Geschwindigkeit, also z.B. 0,104 ms bei 9600 Bit/s (Baud). Das folgende Beispiel zeigt, wie der Buchstabe "a" übertragen wird (ASCII dezimal 97, hex 61, binär 0110 0001, niederwertigstes Bit zuerst ergibt die Bitfolge 1000 0110): +12 V = 0 __ ______ __ a= Startbit (0) -12 V = 1 _ _ _I I__I I I I I__I__I I__I_ _ _ 0,1=Datenbits a 1 0 0 0 0 1 1 0 e e=Stopbit (1) Daraus erkennt man, daß für die Übertragung
eines Bytes bzw. eines 8-Bit-Zeichens inklusive Start- und Stoppbit genau 10 Bits
benötigt |
Tipp-Download |
Quelle : René Thalmann - Switzerland |