Форум: "Система";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
ВнизЧтение из COM - порта и установка таймаутов. Найти похожие ветки
← →
Самый главный Ламер (2001-12-30 18:12) [0]Хочу поздравить Всех с наступающими праздинками.
И поделиться своей проблемой - не могу прочитать из COM-порта.
Функия ReadFile(HComm, Buffer, 1, Readed_Bytes, nil) возвращает True, но значение Readed_Bytes равно нулю.
Насколько я понимаю, данная ситуация может возникать из-за
неправильно установленных таймаутов. Подскажите, какие таймауты мне надо установить, а то уже нет сил перебирать различные варианты.
Вот как выглядит моя процедура
инициализации порта (переписанная из FAQ):
HComm := CreateFile(
PChar("COM2"), GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
if HComm = INVALID_HANDLE_VALUE then
raise Exception.Create("Invalid handle value");
if not Windows.GetCommState(hComm, Mode) or
not Windows.GetCommTimeouts(hComm,TimeOuts)
then begin
ShowMessage("Error");
Exit;
end;
with Mode do begin
BaudRate := 600;
ByteSize := 8;
Parity := NOPARITY;
StopBits := ONESTOPBIT;
Flags := EV_RXCHAR + EV_EVENT2;
end;
with TimeOuts do begin
ReadIntervalTimeout := MAXDWORD;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 0;
end;
if not SetCommState (HComm, Mode) or
not SetCommTimeOuts(HComm,TimeOuts)
then
ShowMessage("Error");
Чтение осуществляю следующим образом:
repeat
if ReadFile(HComm, Buffer, 1, Readed_Bytes, nil) then
Sinhronization := (Readed_Bytes > 0);
Application.ProcessMessages;
until (Sinhronization or Terminate);
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c