【发布时间】:2010-04-14 01:30:46
【问题描述】:
我有一个应用程序可以监听 USB 到串行转换器上的硬件。我的应用程序应该同时监控多个串口。
我循环我需要监听的串行端口,并为每个端口创建一个线程。在线程中,我有我的数据处理例程。
当我分配一个端口时,它运行完美。当我听另一个时,它也有效。然而,当我打开两个端口时,第二个端口在调用serialPort.Open() 时总是抛出UnauthorizedAccessException。我打开端口的顺序无关紧要,第二个总是失败。
我在 while 循环中使用 serialPort.ReadLine() 监听端口。
.NET 可以同时打开多个端口吗?两个都可以听吗?或者我应该使用另一种(线程安全的?)方式来访问我的串行端口事件?
【问题讨论】:
-
我年纪大了,可能在你出生之前就已经在为串口写代码了。所以不要误会,这个“serialPort.ReadLine() in a while loop”。告诉我你还没有完全掌握 datareceived 事件处理程序。当我再次开始编码时,它使用的是 MS Visual Basic,而我编写的第一批软件之一是串行端口处理程序。如果你想看它,请告诉我,它在另一个论坛上。我希望我有时间重新编写它,但我相信它可以与多个串行端口一起使用。我以高达 900Kbps 的速度对其进行了测试。
-
你是对的,我没有使用该事件并且我知道 :-) 我会,一旦我有机会重构此代码 :-)
标签: c# .net serial-port