Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Вниз

порт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 вся ветка

Форум: "Система";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
1-77825
$Hic0
2003-07-11 20:37
2003.07.24
TShape


14-78062
Aga
2003-07-05 13:13
2003.07.24
Ура!!


3-77790
Pauk
2003-06-30 16:05
2003.07.24
DLL и Table


6-78016
united
2003-05-16 14:46
2003.07.24
Отправка почты


4-78183
Alexander
2003-05-22 09:28
2003.07.24
Можно как-то узнать из dll где она располагается?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский