Компонент для последовательного устройства
(TRS232)
Компонент, который представлен здесь,
выполняет функции синхронного чтения и записи в
последовательный интерфейс RS232.
В цикле выполняется Application.ProcessMessages, чтобы все
сообщения от основной программы обрабатывались.
Ниже приведён метод ReadString из компонента TRS323:
function TRS232.ReadString(VAR aResStr: string; aCount: word ): boolean;
var
nRead: dword;
Buffer: string;
Actual, Before: TDateTime;
TimeOutMin, TimeOutSec, lCount: word;
begin
Result := false;
if not Connected then
if not Connect then raise Exception.CreateHelp
('RS232.ReadString:'+
'
Connect not possible !', 101);
aResStr := '';
TimeOutMin:=TimeOut div 60;
TimeOutSec:=TimeOut mod 60;
if (not Connected) or (aCount <= 0) then EXIT;
nRead := 0; lCount := 0;
Before := Time;
while lCount<ACOUNT
begin
Application.ProcessMessages;
SetLength(Buffer,1);
if ReadFile( FComPortHandle, PChar(Buffer)^, 1, nRead, nil )
then
begin
if nRead > 0 then
begin
aResStr := aResStr + Buffer;
inc(lCount);
end;
Actual := Time;
if Actual-Before>EncodeTime(0, TimeOutMin,
TimeOutSec, 0)
then raise Exception.CreateHelp('RS232.ReadString:
TimeOut
!', 103);
end
else begin
raise Exception.CreateHelp('RS232.ReadString: Read not
possible
!', 104);
end;
end; // while
Result:=true;
end;
Скачать исходник - 5кб
|