Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу завершить поток изза ожидания событя порта, WaitCommEvent 
V
    Опции темы
ksili
Дата 2.8.2007, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



У меня в программе порт опрашивается из другого потока:
Код

 PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
 SetCommMask(hCom,EV_RXCHAR | EV_BREAK);

 while (!Terminated)
    {
     dwEvtMask = 0;

     WaitCommEvent(hCom,&dwEvtMask,0);
     
     if(dwEvtMask & EV_BREAK)  return;
     else if(dwEvtMask & EV_RXCHAR)
        {
         .....
        }

При закрытии программы Builder зависает, окно программы исчезает, но она остаётся в диспетчере задач. Я так понимаю, это из-за того, что этот поток стоит на строке WaitCommEvent(hCom,&dwEvtMask,0);

Поставил перед завершением потока :
Код

EscapeCommFunction(All_chnls->chnls[i].pGSM,SETBREAK);

что по идее должно сгенерировать событие порта EV_BREAK, но почему-то это не помогло. Как заставить поток перестать опрашивать порт?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
WM_SASHA
Дата 10.8.2007, 22:40 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 12.4.2007
Где: Узбекистан г.Ташк ент

Репутация: нет
Всего: нет



поток где WaitCommObject().....его хэндл(потока) в  TerminateThread() ...нафиг  smile
PM MAIL   Вверх
Tectoder
Дата 13.8.2007, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: 7
Всего: 8



Использовать, например, WaitCommEvent  в overlapped режиме)
PM   Вверх
ksili
Дата 13.8.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

Репутация: 1
Всего: 17



Цитата(Tectoder @  13.8.2007,  14:00 Найти цитируемый пост)
Использовать, например, WaitCommEvent  в overlapped режиме)

Да я так и стал уже делать. Но ты мне сейчас напомнил, и я вдруг заметил, что у меня ReadFile и WriteFile в overlapped-режиме, а WaitCommEvent как было так и осталось в обычном:
Код

WaitCommEvent(hCom,&dwEvtMask,0);

Но самое интересное, что работает ))


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.2903 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.