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

Вниз

Чтение данных из COM-порта   Найти похожие ветки 

 
dens   (2002-09-26 16:43) [0]

Читаю данные из COM порта в потоке в буфер
var
RxDataBuf :array[1..256] of byte;
const
RxBufSize=SizeOf(RxDataBuf);

procedure ReadThread.Execute;
begin
while not Terminated do
ReadFile(hCOM, RxDataBuf, RxBufSize, RxBytes, nil);
end;

Проблема в том, что поток останавливается (зависает) на ReadFile до тех пор, пока в порт не будет передано 256 байт (размер буфера). Насколько я понимаю, прочитано должно быть и любое меньшее число байт, и их количество записано в RxBytes.
Кто-нибудь сталкивался с такой проблемой?


 
dimod   (2002-09-26 17:35) [1]

используй структуру OVERLAPPED
var
NumBytes: Longword;
BufPtr: Integer;
Res: LongBool;
Ovl : OVERLAPPED;

...
FillChar(Ovl, Sizeof(Ovl), 0);
Ovl.hEvent := CreateEvent(nil, False, False, nil);

hCom := CreateFile(PChar("\\.\COM1"),
GENERIC_READ or GENERIC_WRITE, 0, Nil, OPEN_EXISTING,
FILE_FLAG_OVERLAPPED, 0);

...
Res := ReadFile(hCom, Buffer[BufPtr], 1, NumBytes, @Ovl);
if not Res or (NumBytes <> 1) then begin
StatusLine := 0;
if GetLastError = ERROR_IO_PENDING then
WaitForSingleObject(Ovl.hEvent, INFINITE);
end; { if Not Res ... }


 
Aleks1   (2002-09-27 04:07) [2]

Настрой таймауты порта, если не используешь "события".


 
Delphi 5.01   (2002-09-27 18:08) [3]

raz vi etim zanimaetes to vi tochno znaete kak ustanovit modem v rejim wait for a call "ATS0=1" ne rabotaet, ne smotra naa to chto vse ostalnie operacii rabotaut tipa ATDT ili ATH, ATA toje!



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

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

Наверх




Память: 0.47 MB
Время: 0.012 c
1-93082
BOBBY
2002-11-16 16:12
2002.11.28
процедуры без класса tform


3-92888
Kaginava
2002-11-11 10:09
2002.11.28
Чтение blob


3-92835
MsGuns
2002-11-12 13:44
2002.11.28
Глюк при DisableControls


3-92930
Tundra
2002-11-12 05:27
2002.11.28
Как обратиться к конкретной ячейке DBGRID.


4-93311
Ihor Osov'yak
2002-10-07 12:04
2002.11.28
Знатокам Win32 GDI (хочу странного - hook на gdi)