БОЛЬШОЙ FAQ ПО DELPHI



Компонент для последовательного устройства (TRS232)

Просыпается программист с большого бодуна, поворачивается, а рядом какая-то девушка лежит.
- Ooрs, обнаружено новое устройство...

Компонент, который представлен здесь, выполняет функции синхронного чтения и записи в последовательный интерфейс 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 do
   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;
   Result:=true;
 end;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Видеокурс ВЗЛОМ