Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как прочитать из модема?

01.01.2007

После предварительной настройки переменных, COM порт открывается как обычный файл. Так же пример показывает, как очищать буфер COM порта и читать из него.

Var 
  PortSpec : array[0..255] of char; 
  PortNo   : Word; 
  success : Boolean; 
  error: integer; 
begin 
  FillChar(PortSpec,Sizeof(PortSpec),#0); 
  StrPCopy(PortSpec,'Com1:19200,n,8,1'); 
  PortSpec[3]:=Char(Ord(PortSpec[3])+Ord(PortNo)); 

  if not BuildCommDCB(PortSpec,Mode) Then 
  Begin 
    //какая-то ошибка... 
    Exit; 
  End; 

  PortSpec[5]:=#0;    { 'Com1:' } 

  Mode.Flags:=EV_RXCHAR + EV_EVENT2;  { $1001 } 

  Com := CreateFile(PortSpec,GENERIC_READ or GENERIC_WRITE, 
                    0,   //* comm устройство открывается с эксклюзивным доступом*/ 
                    Nil, //* нет security битов */ 
                    OPEN_EXISTING, //* comm устройства должны использовать OPEN_EXISTING*/ 
                    0,   //* not overlapped I/O */ 
                    0    //* hTemplate должен быть NULL для comm устройств */ 
                   ); 
  if Com = INVALID_HANDLE_VALUE then Error := GetLastError; 
  Success := GetCommState(Com,Mode); 

  if not Success then  // Обработчик ошибки. 
  begin 

  end; 

  Mode.BaudRate := 19200; 
  Mode.ByteSize := 8; 
  Mode.Parity := NOPARITY; 
  Mode.StopBits := ONESTOPBIT;//нужен был для перезаписи в NT 

  Success := SetCommState(Com, Mode); 

  if not Success then  // Обработчик ошибки. 
  begin 

  end; 
end; 

Переменная "com" типа dword.

Вы также можете очистить буфер COM порта

PurgeComm(Com,PURGE_RXCLEAR or PURGE_TXCLEAR);

И прочитать из него

Function ReadCh(Var Ch:Byte):dword; 
var 
n : dword; 
Begin 
  Readfile(Com,ch,1,result,nil); 
End;
Previous page:
Как получить список установленных модемов в Win95/98?
Top:
DRKB
Next page:
S-регистры модема