Как я могу слушать несколько последовательных портов асинхронно в C # - PullRequest
4 голосов
/ 13 апреля 2010

У меня есть приложение, которое прослушивает часть аппаратного обеспечения на преобразователе USB в последовательный порт. Мое приложение должно контролировать более одного последовательного порта одновременно.

Я зацикливаю последовательные порты, которые мне нужно слушать, и создаю поток для каждого порта. В этой ветке у меня есть процедура передачи данных.

Когда я назначаю один порт, он работает безупречно. Когда я слушаю другой, это тоже работает. Однако когда я открываю оба порта, второй порт всегда выдает UnauthorizedAccessException при вызове serialPort.Open(). Не имеет значения, в каком порядке я открываю порты, второй всегда дает сбой.

Я слушаю порты, используя serialPort.ReadLine() в цикле while.

Может ли .NET открывать более одного порта одновременно? Могу ли я слушать оба? Или я должен использовать другой (потокобезопасный?) Способ доступа к событиям моего последовательного порта?

1 Ответ

3 голосов
/ 13 апреля 2010

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

Следующий шаг - перенести эмулятор USB на стоянку и несколько раз обкатать его на машине, чтобы он больше не мог свести с ума программиста. Получите один от другого производителя, который использует другого поставщика драйвера устройства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...