ModTest.dpr
Upload User: hbtlgg88
Upload Date: 2021-04-09
Package Size: 855k
Code Size: 2k
Category:

Delphi VCL

Development Platform:

C++ Builder

  1. program ModTest;
  2. {$APPTYPE CONSOLE}
  3. uses
  4.   SysUtils,
  5.   CPort,
  6.   Windows,
  7.   SyncObjs;
  8. var
  9.   ComPort: TComPort;
  10.   Events: TComEvents;
  11.   Answer, Data: string;
  12.   Step: Integer;
  13.   Event: TEvent;
  14. function CtrlHandler(CtrlType: LongWord): Boolean;
  15. begin
  16.   Event.SetEvent;
  17.   Result := True;
  18. end;
  19. begin
  20.   Event := TEvent.Create(nil, True, False, '');
  21.   SetConsoleCtrlHandler(@CtrlHandler, True);
  22.   try
  23.     ComPort := TComPort.Create(nil);
  24.     try
  25.       if ParamCount > 0 then
  26.         ComPort.Port := ParamStr(1)
  27.       else
  28.         ComPort.Port := 'COM1';
  29.       ComPort.Events := [];
  30.       ComPort.FlowControl.ControlDTR := dtrEnable;
  31.       ComPort.FlowControl.ControlRTS := rtsEnable;
  32.       ComPort.Open; // open port
  33.       ComPort.WriteStr('AT'#13#10); // send test command
  34.       Answer := '';
  35.       Step := 0;
  36.       repeat
  37.         Events := [evRxChar];
  38.         ComPort.WaitForEvent(Events, Event.Handle, 5000);  // wait for charachters
  39.         if evRxChar in Events then
  40.         begin
  41.           ComPort.ReadStr(Data, ComPort.InputCount);
  42.           Answer := Answer + Data;
  43.           if Pos('OK', Answer) > 0 then
  44.             Break;
  45.         end;
  46.         Inc(Step)
  47.       until (Events = []) or (Step = 20);
  48.       if Pos('OK', Answer) > 0 then
  49.         WriteLn('Modem found on ' + ComPort.Port)
  50.       else
  51.         WriteLn('Modem NOT found on ' + ComPort.Port);
  52.     finally
  53.       ComPort.Free;
  54.     end;
  55.   except
  56.     on E: Exception do
  57.       WriteLn('Error: ' + E.Message);
  58.   end;
  59.   Event.Free;
  60. end.