Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6457
Последний выпуск: 19.06.2015

Неудачное обращение к COM порту со стороны разных потоков (меняющийся дескриптор)

26K
02 декабря 2009 года
UserDS
1 / / 01.03.2007
Здравствуйте, у меня проблема: я вынужден работать попеременно с 2 COM портами, используя фирменную (ESP) библиотеку, прилагающуюся к прибору. В ней реализованы ф-ции открытия, чтения и записи данных через порт в прибор и очень хотелось бы использовать именно эти ф-ции для передачи данных. Но есть 3 недостатка: 1) документация к библиотеке отсутствует, 2) нет поддержки корректной работы с 2 портами: открыть можно много портов, но только каждый один раз, потому что 3) нет ф-ции закрытия порта.
Последовательность моей работы: 1) с помощью CreateFile получаю дескриптор; 2) закрываю порт CloseHandle; 3) Открываю порт с помощью esp_open; 4) К-либо операция обмена данными с помощью ф-ций esp_read_write; 5) Закрываю порт CloseHandle, надеясь, что дескриптор не изменяется при реинициализациях;
Проблема состоит в том, что дескриптор HANDLE COM (объявленный глобально) как раз и меняется. CloseHandle иногда дает исключение "недопустимый дескриптор", или иногда до нее GetLastError возвращает 6 как результат неудачной реинициализации порта с помощью esp_open). К портам обращаюся с разных потоков (в каждое конкретное время с портом работает только один поток).
Прошу меня простить за невысокий уровень. Я буду рад любому ходу мыслей, который бы помог мне разобраться в проблеме (не зацикливался бы всецело на общих положениях).
14
02 декабря 2009 года
Phodopus
3.3K / / 19.06.2008
Порты автоматически закроются при закрытии приложении/выгрузке этой библиотеки. Порт открыть 2 раза невозможно - это не шаред ресурс. "Подбором" хендлов ничего хорошего сделать не получится, а вот навредить - оччень вероятно (хотя микрософт как могла позаботилась о таких случаях, но всего учесть нереально).

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог