После предварительной настройки переменных, COM порт открывается как обычный файл. Так же пример показывает, как очищать буфер COM порта и читать из него.
Code: |
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); И прочитать из него
Code: |
Function ReadCh(Var Ch:Byte):dword; var n : dword; Begin Readfile(Com,ch,1,result,nil); End; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!