Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

COM порт и убийство треда.. помогите разобраться с проблем

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Sasha_t



Зарегистрирован: 09.05.2006
Сообщения: 5
Откуда: Украина, Днепр

СообщениеДобавлено: Ср Окт 18 2006 09:09    Заголовок сообщения: COM порт и убийство треда.. помогите разобраться с проблем Ответить с цитатой

Добрый день.
На ком порте висит модем, осуществляется передача/прием данных..
Порт в асинхронном режиме. Функция чтения из порта в отдельном треде, который ждет событие EV_RXCHAR, и считывает данные. Запись в порт просто так, без треда, однако перед вызовом непосредственно самой записи убивается тред чтения. После записи в порт, тред на чтение снова запускается... Тоесть в ходе работы программы много раз осуществляется запись в порт и чтение. OVERLAPPED никак не инициализируется. Проблема состоит в том что под 98windows, програма вылетает через некоторое время, выполнила недопустимую операцию. Причиной вылета программы служит момент убийства треда чтения данных из порта. Под XP проблем никаких нет. Как преодолеть? Smile
Приведу в усиченном виде вызов основных функций в которых, на мой взгляд, кроется проблема, а чтение, запись, запуск треда , убийство треда, там наверно все в порядке.
Заранее спасибо.


Код:


 HANDLE         RPort;
 OVERLAPPED     o;
 DWORD      dwEvtMask;
 char           sPort[256][15];



  RPort=::CreateFile(&RealPort[Port][0],
                     GENERIC_READ|GENERIC_WRITE,
                     NULL,
                     0,
                     OPEN_EXISTING,
                     NULL,
                     NULL);


 SetCommMask(RPort, EV_RXCHAR|EV_BREAK|EV_CTS|EV_DSR|EV_RLSD);


WaitCommEvent(Cl->RPort, &Cl->dwEvtMask, &Cl->o);
/*Cl - это указатель на класс где описаны переменные*/




Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...