C#SerialPort#Open()方法因为端口名而抛出ArgumentException?
在我的本地机器上,
- Windows XP
- 端口(COM和LPT)
- COM3
- RIM虚拟串行端口v2(COM4)
- RIM虚拟串行端口v2(COM5)
以下代码,
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO.Ports; using System.Threading; namespace OpenSerialPortTest { class Test { static void Main(string[] args) { foreach (String serialPortName in SerialPort.GetPortNames()) { SerialPort serialPort = new SerialPort(serialPortName); try { serialPort.Open(); // Line 19 Console.WriteLine(serialPort.PortName); } catch (Exception ex1) { Console.WriteLine(ex1); try { serialPort.Close(); } catch (Exception ex2) { Console.WriteLine(ex2); } } } Console.ReadLine(); } } }
将抛出以下ArgumentException
,
那是,
给定的端口名称不以COM / com开头,也不会解析为有效的串行端口。
有人知道为什么会这样吗?
看看http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/35954173-2eeb-46af-bb3e-86840c6b5484
似乎问题是那些COM端口被映射到其他东西并在响应中给出了这个奇怪的错误。
我有完全相同的问题。 我发现我有一个Windows打印机设置使用相同的端口。 一旦我在打印机设置中更改了端口,SerialPort.Open()就可以工作了。