![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Запусти ВСЕ общение с портом в отдельном потоке (не в разных, а в одном и том же). Пусть там сначала ждет ответа от модема в блокирующем ReadFile, а потом переключается на OVERLAPPED чтения |
|||
|
||||
| programmaker |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
Еще раз переделал все и решил остаться на одном открытии порта с оверлаппедом.
Появилась проблема. Код, который был:
После моего вмешательства стало:
При выполнении моего кода возникает ошибка 997 (Протекает наложенное событие ввода/вывода.) и запись не происходит. Как это побороть??? |
||||
|
|||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Кстати, перед вызовом WriteFile рекомендуется событие сбросить вручную, WriteFile этого не делает |
||||
|
|||||
| programmaker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
Несмотря на ошибку 997 - запись и чтение проходит нормально...
Странно конечно, но проходит... есть вопрос по таймеру (чтоб уж не создавать новую тему - в существующих не нашел :( )
в OnTimer1 - не заходит |
|||
|
||||
| GremlinProg |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2706 Регистрация: 9.8.2005 Где: Тюмень Репутация: 99 Всего: 106 |
если SetTimer вызывается в потоке, то в нем должен быть реализован в каком-нить виде цикл обработки сообщений, ну и соответственно сама очередь, чтобы OnTimer1 мог быть вызван
SetTimer просто привязан к очереди сообщений, как вариант - использовать Waitable Timer, или просто другой поток -------------------- "Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины." |
|||
|
||||
| programmaker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
SetTimer вызывается в основной программе (основной поток), CALLBACK - просто глобальная ф-ция |
|||
|
||||
| programmaker |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.10.2008 Репутация: нет Всего: нет |
заменил SetTimer на timeSetEvent
теперь когда я пытаюсь поменять переменную в CallBack функции выдает ошибку error C2597: illegal reference to non-static member 'CCommModemDevice::modTerm' вот код
как ее побороть? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |