AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Seriell Flusssteuerung einstellen

Ein Thema von TUX_der_Pinguin · begonnen am 23. Mai 2008 · letzter Beitrag vom 26. Mai 2008
Antwort Antwort
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Seriell Flusssteuerung einstellen

  Alt 23. Mai 2008, 12:00
In meinem Programm lese ich von der Seriellenschnittstelle Daten ein, die Schnittstellen Parameter
stelle ich zur Laufzeit ein mit dem Typ TDCB, was alles kein Problem ist, funktioniert alles.

Delphi-Quellcode:
DCB.Baudrate := 38400;
DCB.ByteSize := 8;
...
Nur müßte ich noch die Flusssteuerung auf Xon / Xoff einstellen, dazu habe ich auch schon herrausgefunden
das man dies mit "DBC.Flags" macht, nur wie weiß ich noch nicht.

Was muß ich angeben um die 3 möglichkeiten zu bekommen. (Xon/Xoff, Hardware, Keine). Ich habe schon im Forum
gesucht aber höchstens mal sowas wie $1011 o.ä. gefunden jedoch was das heißt stand nie dabei.
  Mit Zitat antworten Zitat
Benutzerbild von titanic
titanic

Registriert seit: 17. Mai 2008
4 Beiträge
 
#2

Re: Seriell Flusssteuerung einstellen

  Alt 23. Mai 2008, 16:51
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
  Mit Zitat antworten Zitat
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Seriell Flusssteuerung einstellen

  Alt 26. Mai 2008, 10:27
Vielen dank das hat mir schon recht gut geholfen, ich habe ein mini Test Programm geschrieben wo ich die Schnittstelle
per Windows Dialog einstellen kann, dort habe ich dann die Flusssteuerung auf die 3 Möglichkeiten (Keine, Xon/Xoff und Hardware)
gesetzte und mir anschließend DCB.Flags ausgeben lassen ( ShowMessage(IntToStr(DCB.Flags)); ) und kam zu folgendem Ergebnis.

Keine = 4113
Xon/XOff = 785
Hardware = 8213

Ich nehme daher an das da noch ein paar andere Optionen gesetzt werden, welcher Art auch immer. So weiß ich jedoch
was ich setzten muß wenn ich die Flusssteuerung einstellen muß.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz