Люди я работаю с GSM модемом и не факт что он всегда ответит и по этому я использую Wait for single object. Я пишу в порт с помошью WriteFile сбрасываю событие ResetEvent и жду приема Wait for single object. WaitComEvent неподходит так как модем может не ответить и прога зависнет. Как правильно дождаться приема и считать а по истечению таймера сказать что устройство вовремя не ответило вот мой кусок как я пытаюсь сделать подскажите как исправить или дайте свой пример
HANDEL portcomm; OVERLAPPED ovr={0}; ovr.hEvent=CreateEvent(NULL,TRUE,FALSE,NULL); if(!WriteFile(portcomm,buf_out.c_str(),strlen(buf_out.c_str()),&bc,&ovr)) { ShowMessage("Невозможно передать в порт"); } ResetEvent(ovr.hEvent); event_com=WaitForSingleObject(ovr.hEvent,10000); switch (event_com) { case WAIT_OBJECT_0: { GetOverlappedResult(port_ptr,&ovr,&bc,FALSE); ReadFile(port_ptr,buf_in,100,&bc,&ovr); Label1->Caption= buf_in; } break; case WAIT_TIMEOUT: ShowMessage("Устройство вовремя не ответило"); break; case WAIT_FAILED: ShowMessage("ERROR"); break; зарание спасибо да и я не спец то если можно и немного поясните если можно но буду рад всему
Сообщение отредактировал WHALE - Aug 3 2006, 09:05
--------------------
"Hello, word!" - 17 errors 56 warnings
|