Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

ReadFile :(((   Найти похожие ветки 

 
ValeX ©   (2002-07-29 16:04) [0]

Виснет на строке чтения из порта ReadFile... :(((

HPort := CreateFile(PChar("COM1"),
GENERIC_READ + GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0
);
until HPort <> INVALID_HANDLE_VALUE;
BytesWritten:=1;
if not ReadFile(HPort,g[0], 1, BytesWritten, nil) then
ShowMessage("Port is down")
else ShowMessage("OK");


 
DiamondShark ©   (2002-07-29 17:34) [1]

И правильно делает.

Таймауты надо настраивать.

var
ct: COMMTIMEOUTS;
...
begin
...
ct.ReadIntervalTimeout := 100;
ct.ReadTotalTimeoutMultiplier := 10;
ct.ReadTotalTimeoutConstant := 1000;
ct.WriteTotalTimeoutMultiplier := 10;
ct.WriteTotalTimeoutConstant := 1000;
SetCommTimeouts(HPort, ct);
...

Все значения в миллисекундах.
ReadIntervalTimeout -- промежуток между быйтами.
Если после приема байта пройдет 100 мс, то операция чтения прервертся.

Read(Write)TotalTimeoutMultiplier -- время на прием/передачу одного байта.

Read(Write)TotalTimeoutConstant -- время "про запас" на всю операцию.

Если операция чтения/записи прерывается по таймауту, ReadFile (WriteFile) возвращает true, а счетчик байт устанавливается в реально переданное число байт.

-------------
ЗЫ
Вообще то в хелпе все подробно расписано.



Страницы: 1 вся ветка

Текущий архив: 2002.08.12;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.017 c
1-35332
qube
2002-07-30 10:09
2002.08.12
Есть ли для Delphi функции для работы с регулярными выражениями?


3-35151
jonik pegas
2002-07-22 10:37
2002.08.12
Номер записи в SQL запросе


4-35500
Max2000
2002-06-04 12:48
2002.08.12
Как как на API открывать и закрывать доступ к диску или папке.


1-35358
nikolo
2002-07-30 10:31
2002.08.12
clCream is not a valid integer value ?


4-35511
Prooksius
2002-06-06 10:41
2002.08.12
RichEdit 1.0 vs RichEdit 2.0