我有一个通过串行端口连接到设备的实用程序。为了测试这个应用程序,我正在为该设备编写一个模拟器。
这两个应用程序旨在在同一台 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();
这个问题不相关,因为它是一个未使用的虚拟端口(如果重要,IsOpen 返回 false): C# SerialPort#Open() 方法由于端口名称而引发 ArgumentException?
编辑:我还确保端口名称出现在 SerialPort.GetPortNames() 中,并且它出现在“com0com 串行端口仿真器”下的 WIndows 设备管理器中。我还尝试使用 CNCA 而不是 B(具有几个不同的现有虚拟端口),尝试删除“HandShake”行并尝试将波特率更改为 115200,以防万一(尽管最终我需要 9600)。