2010-04-13 3 views
4

У меня есть приложение, которое прослушивает часть оборудования на конвертере USB-Serial. Мое приложение должно контролировать несколько последовательных портов одновременно.Как я могу прослушивать несколько последовательных портов асинхронно в C#

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

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

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

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

+0

Я стар и, вероятно, пишу код для последовательных портов, прежде чем вы родились. Поэтому не принимайте это неправильно, это «serialPort.ReadLine() в цикле while». говорит, что вы не полностью поняли обработчик обработанных данных. Когда я снова начал кодирование, это было с MS Visual Basic, и одним из первых компонентов программного обеспечения, которое я написал, был обработчик serialport. Если вы хотите посмотреть на это, дайте мне знать, это на другом форуме. Мне жаль, что у меня не было времени переписать его, но я считаю, что он будет работать с несколькими последовательными портами. Я тестировал его со скоростью до 900 Кбит/с. – dbasnett

+0

Вы правы, я не пользуюсь этим событием, и я знаю об этом :-) Я буду, как только у меня появится возможность реорганизовать этот код :-) –

ответ

3

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

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

+0

Комментарий на парковку помог :-) оказалось, что мои замыкания снова открыл тот же порт. Глупый я! :(Спасибо! –

+1

+1 для наконечника уничтожения устройства USB. Все устройства USB для последовательных устройств, безусловно, НЕ сделаны равными. – Andy

Смежные вопросы