hur kommunicerar man via seriel porten, dvs läser av signaler och skickar signaler till den?
seriel port
1 svar · 259 visningar · startad av msossna
// variabler
var ComFile : THandle;
DeviceName : Array[0..80] of Char;
DCB : TDCB;
config : string;
CommTimeouts : TCommTimeouts;
begin
//
// anslut
//
StrPCopy(DeviceName, 'COM1'+ ':'); // eller annan
ComFile := CreateFile(DeviceName, GENERIC_READ or GENERIC_WRITE, 0, Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
SetupComm(ComFile, RxBufferSize, TxBufferSize);
GetCommState(ComFile, DCB)
Config := 'baud=' + IntToStr(19200) + ' parity=n data=8 stop=1' + #0; // eller annat
BuildCommDCB(@Config[1], DCB);
SetCommState(ComFile, DCB);
with CommTimeouts do begin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 1000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 1000;
end;
SetCommTimeouts(ComFile, CommTimeouts)
....
//
// skicka och ta emot text
//
function SendText(str : string) : boolean;
var
BytesWritten : DWORD;
Buffer : array[0..100] of char;
begin
StrPCopy(Buffer, str);
if not WriteFile(ComFile, Buffer, length(str), BytesWritten, nil) then
Result := false
else
Result := true;
end;
function ReceiveText : string;
var
Buffer : array[0..255] of char;
i : integer;
ByteCount : DWORD;
s : string;
begin
s:='';
ReadFile(ComFile,buffer,255,ByteCount,nil);
for i:=0 to ByteCount-1 do
s:=s+Buffer[i];
Result := s;
end;
mvh Tony