Hallo TUX_der_Pinguin,
Hier:
http://www.hsg-kl.de/faecher/inf/msr...owo04/TCPD.php
gibt es eine tolle Dokumentation zu TCOMPort. Dort steht u.a.:
Zitat:
Delphi-Quellcode:
//--Konstanten zum einfachen Setzen der Portflags----------------------------------------------
dcb_Binary = $00000001; // Binärer Modus - In Windows immer auf 1!
dcb_ParityCheck = $00000002; // Paritätsüberprüfung
dcb_OutxCtsFlow = $00000004; // CTS Flusskontrolle - Sendekontrolle mit Hilfe von CTS
dcb_OutxDsrFlow = $00000008; // DSR Flusskontrolle - Sendekontroll mit Hilfe von DSR
dcb_DtrControlDisable = $00000000; // DTR Flusskontrolle - Schließt DTR auf 0 bei Verbindung und hält es auf 0
dcb_DtrControlEnable = $00000010; // DTR Flusskontrolle - Öffnet DTR auf 1 bei Verbindung und hält es auf 1
dcb_DtrControlHandshake = $00000020; // DTR Flusskontrolle - Handshake-Funktion.
dcb_DtrControlMask = $00000030;
dcb_DsrSensitvity = $00000040; // Zustandsänderung auf DSR überwachen
dcb_TXContinueOnXoff = $00000080; // Stellt ein, ob die Übertragung bei XOff angehalten wird oder nicht
dcb_OutX = $00000100; // Flusskontrolle mit XOn/XOff beim Senden
dcb_InX = $00000200; // Flusskontrolle mit XOn/XOff beim Empfangen
dcb_ErrorChar = $00000400; // Bestimmt, ob Bytes mit falscher Parität durch den Error-Char ersetzt wird.
dcb_NullStrip = $00000800; // Null-Bytes werden beim Empfangen ignoriert
dcb_RtsControlDisable = $00000000; // RTS-Flusskontrolle - Schließt RTS auf 0 bei Verbindung und hält es auf 0
dcb_RtsControlEnable = $00001000; // RTS-Flusskontrolle - Öffnet RTS auf 1 bei Verbindung und hält es auf 1
dcb_RtsControlHandshake = $00002000; // RTS-Flusskontrolle - Handshake-Funktion
dcb_RtsControlToggle = $00003000; // RTS-Flusskontrolle - RTS ist an wenn Bytes zu senden sind, wenn keine zu senden sind ist RTS auf 0
dcb_RtsControlMask = $00003000; // RTS-Flusskontrolle
dcb_AbortOnError = $00004000; // Wenn ein Fehler auftritt, stoppt jede Transmission und der
// Fehler muss mit Hilfe von ClearCommError beseitigt werden.
dcb_Reserveds = $FFFF8000; // Reserviert! Nicht benutzen!
//------------------------------------------------------------------------------------------------------------------------
Das sind die Flags für deinen TDCB-Typen:
Hier:
http://www.delphipraxis.net/internal...ct.php?t=67342
gibt es ein komplettes Beispiel mit TDCB. Dort steht u.a.:
Zitat:
DCB.Flags := 5123; { Wenn 2 Pins belegt sind }
5123 ist in diesen fall eine dezimale Zahl (d.h. man zählt 0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-...)
in das hexadezimale System übertragen ergibt sich $1403 ($00001403).
Im hexadezimalen System zählt man 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F-10-11-12-13-14-15-16-17-18-19-1A-1B-...
Nun ist $1430 oder 5123 nichts anderes als eine mögliche Summe der obigen Flag-codes, das heisst konkret, das $1403 die Summe von:
Delphi-Quellcode:
dcb_RtsControlEnable = $00001000; // RTS-Flusskontrolle - Öffnet RTS auf 1 bei Verbindung und hält es auf 1;
dcb_ErrorChar = $00000400; // Bestimmt, ob Bytes mit falscher Parität durch den Error-Char ersetzt wird.;
dcb_ParityCheck = $00000002; // Paritätsüberprüfung; und
dcb_Binary = $00000001; // Binärer Modus - In Windows immer auf 1!
ist.
Für dich ist dabei erst einmal nur der erste Wert - $1000 - interessant. das veränderst du für Xon/Xoff so:
Delphi-Quellcode:
dcb_InX = $00000200; // Flusskontrolle mit XOn/XOff beim Empfangen
dcb_OutX = $00000100; // Flusskontrolle mit XOn/XOff beim Senden
dcb_ErrorChar = $00000400; // Bestimmt, ob Bytes mit falscher Parität durch den Error-Char ersetzt wird.;
dcb_ParityCheck = $00000002; // Paritätsüberprüfung; und
dcb_Binary = $00000001; // Binärer Modus - In Windows immer auf 1!#
die summe ist $703 (hex!) oder 1795 (dez).
Wie du dcb.flags zuweist (ob nun $703 oder 1795) spielt dabei keine Rolle, denn beide Darstellungen meinen ein und dasselbe.
Frohes Programmieren
Titanic