Вниз
Скачать: CL | DM;

портCOM где лоханулся   Найти похожие ветки 

← →
Jura   (2003-05-14 11:56) [0]

Я делаю так
DataBuf: byte;
Bytes: DWord;
Bufsize=1;
HCOM:=CreateFile(Pchar(Port),GENERIC_READ,0,NIL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Readfile(HCOM,DataBuf,Bufsize,Bytes,nil);
Вывожу на печать DataBuf и ни фига хотя я знаю что порт не пустой


← →
AlexRush ©   (2003-05-14 13:41) [1]

Общение с COM присходит асинхронно (используется структура OVERLAPPED)

var
fComNumber:BYTE;
dwTransfered :DWORD;
dwReaded :DWORD;
dwWrited :DWORD;
hCom :DWORD;
owr :OVERLAPPED;
buf :packed array of char;


function OpenComm(CommNumber:BYTE):DWORD;
var strCommName:string;
begin
strCommName:="COM"+Char((CommNumber and $08)+$31)+#0;
result:=CreateFileA(@strCommName[1],
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED{},
0);
ZeroMemory(@owr,sizeof(owr));
owr.hEvent:=CreateEvent(nil,TRUE,FALSE,nil);
end;


//У меня чтение в отдельном потоке
procedure ReadCommThreadProc;stdcall;
begin
while true
do begin
ZeroMemory(@buf[0],BUF_SIZE);
dwReaded:=0;
dwTransfered:=0;
if not ReadFile(hCom,
@buf[0],
1024,
@dwReaded,
@owr)
then begin
case GetLastError() of
ERROR_IO_PENDING: begin
if WAIT_OBJECT_0
=WaitForSingleObject(hCom,INFINITE)
then begin
if not GetOverlappedResult(hCom,owr,dwTransfered,TRUE)
then begin
LastErrorMsg("GetOverlappedResult");
break;
end
else dwReaded:=dwTransfered;
end
else begin
LastErrorMsg("WaitForSingleObject");
break;
end;
end;
else begin
LastErrorMsg("ReadFile");
break;
end;
end;
end
else begin
dwTransfered:=dwReaded;
end;

frmMain.AddIN;

Sleep(10);
end;
ExitThread(0);
end;


← →
Jura   (2003-05-14 15:24) [2]

Большое спасибо.
Бегу в ун-т.Вернусь, постараюсь допетрить.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
14-78126
Chris
2003-07-08 21:39
2003.07.24
загрузка ОС на бездисковой станции


7-78166
Maverick
2003-05-14 09:38
2003.07.24
Печать на плоттер


1-77932
OlegNOE
2003-07-10 15:30
2003.07.24
Рамка вокруг ячейки


1-77925
Непомню
2003-07-10 14:37
2003.07.24
SynEdit и Delphi 7


6-78018
vv
2003-05-13 11:27
2003.07.24
Удаленное соединение




   Наверх