我有一个通过串口连接到设备的实用程序。 为了testing这个应用程序,我正在为该设备编写一个模拟器。
这两个应用程序都打算在同一台Windows 7机器上运行。
我正在用C#编写模拟器。 我使用com0com来创build一对虚拟端口(在这种情况下 – CNCA8和CNCB8,因为我已经有几个现有的对)。
我试图在模拟器中打开CNCB8(应用程序还没有运行),我得到一个exception:
System.dll中发生未处理的types“System.ArgumentException”exception
其他信息:给定的端口名称不以COM / COM开头,或者不parsing为有效的串行端口。
示例代码:
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(),它出现在WIndows的设备pipe理器下'com0com串行端口仿真器'。 我也尝试使用CNCA而不是B(有几个不同的现有虚拟端口),试图删除“HandShake”线,并试图将波特率更改为115200,以防万一(尽pipe最终我需要9600)。
Com0com让你编辑端口名称。 如果你把这个对重命名为COM10和COM11,这是否仍然会发生?
另外,港口实际上还活着吗? 在Windows server 2008 R2上,我们必须发出bcdedit命令,Com0com自述文件提到,因为设备驱动程序不受操作系统的信任。