procedure TRDCOMService.ServiceStart(Sender: TService;
var Started: Boolean);
begin
ComPort1.Open;
Interactive := True;
ServiceType := stWin32;
StartType := stAuto;
Started := true;
end;
procedure TRDCOMService.ServiceExecute(Sender: TService);
begin
While Not Terminated do
if (ComPort1.InputCount > 80) then FlushBuffer;
end;
procedure TRDCOMService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
FlushBuffer;
ComPort1.Close;
Stopped := True;
end;
procedure TRDCOMService.FlushBuffer;
var
Buffer: PChar;
BytesCopy: DWord;
begin
Buffer := AllocMem(ComPort1.InputCount);
Stream := TFileStream.Create('lectura.txt', fmOpenReadWrite);
Stream.Seek(0, soFromEnd);
try
BytesCopy := ComPort1.Read(Buffer^, ComPort1.InputCount);
Stream.Write(Buffer^, BytesCopy);
finally
FreeMem(Buffer);
Stream.Free;
end;
end;