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

Вниз

COM+Я = Программа виснет ?!?   Найти похожие ветки 

 
Phantomouse ©   (2004-12-14 12:59) [0]

Странная сиуация. Вчера вечером ушел из офиса. Моя прграммка нормально работала. Сегодня утром - виснет :-(. И такое не в первый раз. В коде ничего не менял. Виснет программка при попытке читать данные из Com-порта. Вот код:


var
DCB   : TDCB;
hPort : THandle;
buffer : byte;
rp:cardinal;
ntp:cardinal;
begin
ntp:=1;
 hPort := CreateFile(PChar("COM"+IntToStr(2)),
                     GENERIC_READ + GENERIC_WRITE,
                     0, nil,
                     OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if hPort = INVALID_HANDLE_VALUE then begin
  Exit;
 end;
 GetCommState(hPort, DCB);
 DCB.BaudRate := 9600;
 DCB.ByteSize := 8;
 DCB.StopBits := 1;
 DCB.Parity   := 0;
 DCB.Flags := 20625;
 SetCommState(hPort, DCB);
 SetupComm(hPort, 1024, 1024);

 buffer:=00;
 WriteFile(hPort, buffer, ntp, rp, nil);

 buffer:=01;
 WriteFile(hPort, buffer, ntp, rp, nil);

 ReadFile(hPort, buffer, ntp, rp, nil);
 Memo1.Lines.Add(Char(buffer));
 
 CloseHandle(hPort);
end;


Может кто скажет в чем дело.

P.S. Ответы типа "У тя руки кривые" - не особо умное решение. Видите, что кривые руки - покажите в каком месте. Выпрямлю :-)


 
DiamondShark ©   (2004-12-14 13:06) [1]

Никто ей ничего не присылает, вот и виснет.
На самом деле не виснет, а ждёт, пока ей чего-нибудь в порт свалится.


 
pavel_guzhanov   (2004-12-14 13:16) [2]

Да, программа ждет данных. Чтобы избежать такого "зависания", настрой таймауты. Мне это помогло...


 
-=SS=- ©   (2004-12-14 16:27) [3]

>>ReadFile(hPort, buffer, ntp, rp, nil);
наверняка зависает тут поскольку устройство не посылает никаких сообщений.
 Необходимо проверять буфер порта если он не пустой тогда читаем... только как это сделать на винапи незнаю... на асме всё просто :)


 
Phantomouse ©   (2004-12-14 16:29) [4]

С таймаутами все заработало. Прям спасибо :-)



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

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

Наверх




Память: 0.47 MB
Время: 0.031 c
8-1098527695
Wish
2004-10-23 14:34
2005.02.06
Разложить маленький Avi на несколько bitmap ов.


14-1106040354
mac
2005-01-18 12:25
2005.02.06
векторная графика


3-1104317212
Russko
2004-12-29 13:46
2005.02.06
Связка 2-х баз данных в одном запросе


4-1103165911
Змей
2004-12-16 05:58
2005.02.06
bmp---> systray


14-1105909240
Profi
2005-01-17 00:00
2005.02.06
Опрос