Как прочитать из модема?
Материал из DRKB
Как прочитать из модема?[править | править код]
После предварительной настройки переменных, 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;
Source: Взято из http://forum.sources.ru
ID: 01463