Delphi - база знаний

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


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



После предварительной настройки переменных, 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;

Взято с Исходников.ru





Содержание раздела