C# 如何在C中异步侦听多个串行端口#

C# 如何在C中异步侦听多个串行端口#,c#,.net,serial-port,C#,.net,Serial Port,我有一个应用程序,可以在USB到串行转换器上监听硬件。我的应用程序应该同时监视多个串行端口 我循环我需要监听的串行端口,并为每个端口创建一个线程。在线程中,我有我的数据处理例程 当我分配一个端口时,它可以完美地运行。当我听另一个的时候,它也起作用。但是,当我打开两个端口时,调用serialPort.open()时,第二个端口总是抛出UnauthorizedAccessException。无论我以什么顺序打开端口,第二个端口总是失败 我在while循环中使用serialPort.ReadLine(

我有一个应用程序,可以在USB到串行转换器上监听硬件。我的应用程序应该同时监视多个串行端口

我循环我需要监听的串行端口,并为每个端口创建一个线程。在线程中,我有我的数据处理例程

当我分配一个端口时,它可以完美地运行。当我听另一个的时候,它也起作用。但是,当我打开两个端口时,调用
serialPort.open()
时,第二个端口总是抛出
UnauthorizedAccessException
。无论我以什么顺序打开端口,第二个端口总是失败

我在while循环中使用
serialPort.ReadLine()
侦听端口

NET能否同时打开多个端口?我能两个都听吗?或者我应该使用另一种(线程安全?)方式来访问串行端口事件吗?

异常有一个非常特殊的含义,它告诉您有人已经打开了端口。那会是谁?在打开第二个端口时,三次检查是否确实使用了不同的端口名


下一步是把USB仿真器带到停车场,用你的车在上面运行几次,这样它就不能再驱动程序员了。从另一家使用不同设备驱动程序供应商的制造商处购买。

我年纪大了,可能在你出生之前就在为串行端口编写代码。所以不要误解,这个“while循环中的serialPort.ReadLine()”告诉我您还没有完全掌握datareceived事件处理程序。当我再次开始编写代码时,它是使用MS Visual Basic编写的,我编写的第一批软件之一是serialport处理程序。如果你想看它让我知道,它是在另一个论坛。我希望我有时间重新编写它,但我相信它将与一个以上的串行端口工作。我以高达900Kbps的速度测试了它。你是对的,我没有使用该事件,并且知道:-)我会,只要我有机会重构此代码:-)停车场评论有帮助:-)结果我的关闭导致同一端口再次打开。愚蠢的我(感谢!+1的USB设备销毁提示。所有USB到串行设备绝对不相等。