У меня есть приложение, которое прослушивает часть оборудования на конвертере USB-Serial. Мое приложение должно контролировать несколько последовательных портов одновременно.Как я могу прослушивать несколько последовательных портов асинхронно в C#
Я зациклирую последовательные порты, которые мне нужно прослушать, и создайте поток для каждого порта. В потоке у меня есть ручная обработка данных.
Когда я назначаю один порт, он работает безупречно. Когда я слушаю другой, он также работает. Однако, когда я открываю оба порта, второй порт всегда выдает UnauthorizedAccessException
при вызове serialPort.Open()
. Неважно, в каком порядке я открываю порты, второй всегда терпит неудачу.
Я слушаю порты, используя serialPort.ReadLine()
в замкнутом цикле.
Может ли .NET открыть несколько портов одновременно? Могу ли я слушать оба? Или я должен использовать другой способ (thread safe?) Для доступа к событиям последовательного порта?
Я стар и, вероятно, пишу код для последовательных портов, прежде чем вы родились. Поэтому не принимайте это неправильно, это «serialPort.ReadLine() в цикле while». говорит, что вы не полностью поняли обработчик обработанных данных. Когда я снова начал кодирование, это было с MS Visual Basic, и одним из первых компонентов программного обеспечения, которое я написал, был обработчик serialport. Если вы хотите посмотреть на это, дайте мне знать, это на другом форуме. Мне жаль, что у меня не было времени переписать его, но я считаю, что он будет работать с несколькими последовательными портами. Я тестировал его со скоростью до 900 Кбит/с. – dbasnett
Вы правы, я не пользуюсь этим событием, и я знаю об этом :-) Я буду, как только у меня появится возможность реорганизовать этот код :-) –