c# – SerialPort.GetPortNames()返回错误的端口名称
虽然c#不是我的主要编程语言,但我现在正在维护这样一个程序几年.此程序连接到串行端口上的设备,从
Windows XP到8.1.一个特定的“功能”是它使用.NET Framework 2.0.
有些用户升级到Windows 10,我们抱怨程序无法检测/打开设备的COM端口.我们已经在我们自己的测试系统上使用干净的Win10安装确认了这一点 事实证明,函数SerialPort.GetPortNames()返回错误的端口名称,并在端口名称后添加“奇怪”字符. >COM3吀 等等.当我刷新列表时,每次在数字后面显示另一个字符(或两个). string[] portNames = System.IO.Ports.SerialPort.GetPortNames(); log("Available ports:"); foreach (string PortAvailable in portNames) { log(PortAvailable); } 日志函数会在表单上的标准TextBox中添加一行: txtLog.Text += Msg + Environment.NewLine; 这适用于所有其他Windows版本. 我怀疑.NET Framework 2.0不再是100%兼容的,虽然你可以在Windows功能中启用它,但似乎程序本身运行正常(除了我的串口问题).我有点害怕升级到更新的.NET,更不用说我们使用VisualStudio 2008 for c#(max = .NET 3.5).请注意,程序仍然需要在Windows XP上运行(POS版本仍由Microsoft维护). 添加: 增加2: 解决方法
我也见过这些奇怪的人物.我的解决方案是使用正则表达式过滤掉通信端口名称的数字部分.
Dim ports As New Devices.Ports For Each s As String In ports.SerialPortNames s = Regex.Replace(s,"D*(d+)D*","$1") Debug.WriteLine(s) Next (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |