Es ist vollbracht,ich habe es verstanden, dauert bei mir immer etwas länger....
und nochmals vielen Dank für die Infos.
Das Ursprungsproblem ist ja die Übergabe des Sets an eine Funktion bzw. Procedure:
Ich muss also ersteinmal eine Instanz erzeugen vom Typ TSerialFlags, welche später als Übergabeparameter verwendet wird
und diese Instanz muss dann erstmal initialisiert werden. (dachte ich)
Wenn ich jedoch nur EINEN Wert habe, gibt das ja irgendwie nicht wirklich Sinn...(dachte ich)
Doch dazu erstmal folgendes kleines Progrämmchen zum testen:
Code: Alles auswählen
program Project1;
type
TMySet = set of (opt1, opt2);
var
mySet: TMySet;
procedure Test(param:TMySet);
begin
if param = [] then writeln('nix drin')
else begin
if opt1 in param then Write('opt1 ');
if opt2 in param then Write('opt2 ');
end;
Writeln;
end;
begin
mySet:=[opt1]; // initialisierung der Instanz mit opt1
Test(mySet); // hier wird dann opt1 ausgegeben
mySet:=[opt2]; // initialisierung der Instanz opt2
Test(mySet); // hier wird dann opt2 ausgegeben
mySet:=[opt1,opt2]; // initialisierung der Instanz mit opt2 und opt2
Test(mySet); // hier wird dann opt1 und opt 2 ausgegeben
mySet:=[]; // nun ist das Set leer....das geht nämlich auch...
Test(mySet); // hier wird dann "nix drin" ausgegeben
readln; // Beenden mit Entertaste
end.
Demnach folgerte ich für die Unit Serial muss man dann folgendes tun:
Code: Alles auswählen
var FlowControl = TSerialFlags;
.....
FlowControl:=[RtsCtsFlowControl]; // wenn man die Datenflusskontrolle über RTS und CTS haben möchte.
FlowControl:=[]; // wenn man keine Flusskontrolle haben möchte.
SerSetParams(handle, 115200, 8, NoneParity, 1, FlowControl);
Aber es geht auch ohne eine Zwischenvariable, nämlich so:
Code: Alles auswählen
SerSetParams(handle, 115200, 8, NoneParity, 1, []); // ohne Flusskontrolle
SerSetParams(handle, 115200, 8, NoneParity, 1, [RtsCtsFlowControl]); // mit Flusskontrolle
Achja, mit diesen Proceduren lassen sich die Pegel für DTR und RTS einstellen, das war ja auch noch gefragt.
procedure SerSetDTR(Handle: TSerialHandle; State: Boolean);
procedure SerSetRTS(Handle: TSerialHandle; State: Boolean);
Ich würde sagen das Problem ist gelöst, aber ich war ja nicht der Thread Steller.