| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Wait for single object |
| Автор: KRTPC 3.8.2006, 10:09 | ||
| Люди я работаю с GSM модемом и не факт что он всегда ответит и по этому я использую Wait for single object. Я пишу в порт с помошью WriteFile сбрасываю событие ResetEvent и жду приема Wait for single object. WaitComEvent неподходит так как модем может не ответить и прога зависнет. Как правильно дождаться приема и считать а по истечению таймера сказать что устройство вовремя не ответило вот мой кусок как я пытаюсь сделать подскажите как исправить или дайте свой пример
зарание спасибо да и я не спец то если можно и немного поясните если можно но буду рад всему |
| Автор: ElcnU 3.8.2006, 10:25 |
| в другом патоке и с помощью событий |
| Автор: KRTPC 3.8.2006, 10:48 |
| а как мне определить что порт свободен? |
| Автор: Romikgy 3.8.2006, 10:54 |
| если открыть его не удасться значит занят |
| Автор: KRTPC 4.8.2006, 09:39 | ||
нужна помошь
на операцию WriteFile прога выдает ошибку 997 ERROR_NOACCESS при этом в порт пишется и из порта можно считать но не понятно откуда ошибка??? |
| Автор: KRTPC 4.8.2006, 12:38 |
| переменная pory HANDEL и CreateFile возврашает тоже HANDEL если не так то поясни по подробнее что ты хочешь спросить |
| Автор: Romikgy 4.8.2006, 12:51 | ||||
то что она возвращает я знаю, что в ней при трасировке?
такую проверку сделай после криате файла
|
| Автор: KRTPC 4.8.2006, 14:28 |
| эту проверку я делаю и в ней ошибок нет.Ошибка появляется после writefile-код ошибки 997, но в порт поишется и читается |
| Автор: Romikgy 4.8.2006, 15:17 |
| KRTPC, SetCommState сначало имхо надо настроить порт для передачи Добавлено @ 15:23 http://vingrad.ru/CPP-FAQ-002452 |
| Автор: Ataru 7.4.2009, 16:37 | ||
вообще-то 997 это ERROR_IO_PENDING, а ERROR_NOACCESS = 998 |
| Автор: maxim1000 7.4.2009, 17:27 |
довольно опасная строка std::string не гарантирует, что пока WriteFile будет писать, там ничего не поменяется или буфер вообще не переаллокейтится в другое место |
| Автор: GremlinProg 7.4.2009, 19:08 | ||
| ResetEvent тут точно стабильности не прибавит сразу перед сбросом, операция может завершится и на тебе - дедлок на 10 сек и дальнейшая потеря управления над этим буфером а GetOverlappedResult без ожидания - не дает гарантии, что ее вызов потребуется только единожды (тут цикл нужен, пока не будет передано требуемое число байт) кстати, к чему тут WAIT_ABANDONED?
GetOverlappedResult и т.п. ставь в ветку WAIT_TIMEOUT а WAIT_ABANDONED убери |
| Автор: Dem_max 7.4.2009, 19:17 |
| А не вариант посмотреть двумя темами ниже и увидеть работающий код ??? что за лень такая ? http://forum.vingrad.ru/forum/topic-254046/kw-com-порт.html |
| Автор: xvr 8.4.2009, 11:16 | ||||
Прием осуществляется функцией ReadFile, а ее в исходнике не наблюдается Для отправки и последующего приема последовательность действий должна быть такой:
|