C#打开虚拟串行端口会引发ArgumentException

Asa*_*saf 5 c# windows serial-port virtual-serial-port com0com

我有一个通过串行端口连接到设备的实用程序。为了测试该应用程序,我正在为设备编写一个模拟器。

这两个应用程序都打算在同一Windows 7计算机上运行。

我正在用C#编写模拟器。我使用com0com创建了一对虚拟端口(在本例中为CNCA8和CNCB8,因为我已经有几个现有的端口对)。

我正在尝试在模拟器中打开CNCB8(应用程序尚未运行),但出现异常:

System.dll中发生了'System.ArgumentException'类型的未处理异常

附加信息:给定的端口名不能以COM / com开头或不能解析为有效的串行端口。

样例代码:

        SerialPort port = new SerialPort("CNCB8", 9600, Parity.None, 8, StopBits.One);
        port.Handshake = Handshake.None;            
        port.Open();
Run Code Online (Sandbox Code Playgroud)

此问题无关紧要,因为它是未使用的虚拟端口(如果重要,IsOpen将返回false): C#SerialPort#Open()方法由于端口名称而抛出ArgumentException?

编辑:我还确保端口名称出现在SerialPort.GetPortNames()中,并且它出现在Windows的“ com0com串行端口仿真器”下的设备管理器中。我还尝试使用CNCA代替B(具有几个现有的虚拟端口),尝试删除“ HandShake”行,并尝试将波特率更改为115200,以防万一(尽管最终我在那里需要9600)。

小智 5

Com0com 确实允许您编辑端口名称。如果您将您的配对重命名为 COM10 和 COM11,这种情况还会发生吗?

另外,这些端口真的还活着吗?在 Windows Server 2008 R2 上,我们必须发出 Com0com README 文件中提到的 bcdedit 命令,因为操作系统不信任设备驱动程序。