Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > COM порт


Автор: mullih 30.7.2008, 18:32
Всем доброго времени суток
Может кто сталкивался с такой проблемой и знает решение.
Существует устройство на виртуальном ком порту, проще COM -> USB.
SerialPort serialPort = new SerialPort("COM4");
serialPort.Open()
и идет работа с устройством

если при открытом порте вытащить USB кабель и вставить его обратно,  то, как я понимаю, windows пересоздаст устройство как новый объект. Момент отключения какого то устройства  я могу отловить. Но как определить что это именно мое устройство и после того как кабель вставить обратно не всегда получается пересоздать объект
serialPort = new SerialPort("COM4");

кидает исключения то устройство не найдено то Access denited

Может кто подкинет если не готовое решение то хотябы идею куда смотреть и что может помочь

заранее благодарен

С уважением

Автор: Partizan 30.7.2008, 19:09
Цитата

как определить что это именно мое устройство 


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

Автор: Mal Hack 30.7.2008, 19:25
Что касается С# то тут есть проблемы, касающиеся КОМ порта.
1. TIMEOUT_STRUCTURE, который надо задавать системе C# судя по всему задает сам. По крайней мере мне с товарищем настроить это так и не удалось. А посему программа в определенных случаях будет просто отваливаться.
2. Даже в случае отключения COM порта, вы должны сгенерировать исключение и в нем закрыть handle по сути, т.к. скорее всего второй раз вы не можете создать подключение к порту, ввиду того, что у вас старое еще открыто. По крайней мере в С++ оно так, за определенной оговоркой, но в данном случае это - мелочь (оговорка).

Как показал мой опыт работы с подобной архитектурой (COM->USB), то просто так выдернуть вставить не получается. Проблема в том, что USB-то поддерживает plug&play, а система COM порты подключает при загрузке, т.е. в систему - добавляет, а инициировать для работы не может. Но это, скажем так догадка. В принципе может тут дело еще в переходнике. У вас какой?

Цитата(Partizan @  30.7.2008,  20:09 Найти цитируемый пост)
ну наверное об этом лучше у самого устройства спросить...
ну тоесть когда устройство воткнули, задать ему вопрос "ты кто?" 

ППКС, но с одним исключением. Как правило, такие в такие девайсы функции "кто я" не встраивается. Но есть какая-ть пустая команда, которой можно проверить работоспособность, т.к. формат пакета отправленного и получаемого мы знаем.

Автор: neutrino 3.8.2008, 14:23
"Переходник" вставляется в COM или в USB? А то не совсем понятно что имеется в виду. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)