2 bjut yue bjut_yue 于 2013.07.19 23:11 提问

.net开发 获取串口列 出现错误,没有的串口也显示出来很奇怪

本人最近在做一个gprs通讯,需要做一个下拉combobox,能自动读取所有已有串口。
我尝试了三种方法:
1、使用win32 的api :int ret = RegOpenKey(HKEY_LOCAL_MACHINE, @"Hardware\DEVICEMAP\SERIALCOMM", ref hKey);
2、System.IO.Ports.SerialPort.GetPortNames();
3、RegistryKey keyCom = Registry.LocalMachine.OpenSubKey("Hardware\DeviceMap\SerialComm");

使用这三种方法得到的结果是一样的,我在设备管理器中并没有串口,但是在我使用上述方法进行检测的时候,出现了Com3.
如果我确实插上了串口线在com3上,那么也能检测出com3,如果我查在了串口5上,那么检测到的是com5和com3,很奇怪,这个时候com3也是不应该有的。
因为这些问题,导致很麻烦也不知道怎么解决
我的系统是win7,不过在xp上测试软件一样出现这个问题,使用串口助手测试工具也出现了这个问题
请大神们帮忙解答下。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
.net获取串口列表
//方法一 String[] Str2 = System.IO.Ports.SerialPort.GetPortNames(); if (Str2.Length > 0) { for (int k = 0; k < Str2.Length; k++) {
【.Net码农】.NET中对串口(COM)读写操作方式汇总
http://www.cnblogs.com/aierong/archive/2009/08/21/1551589.html 最近总结了串口(COM)读写操作的三种方式: 第1种方式是采用微软在.NET2.0推出了一个串口控件,SerialPort类,但必须是.NET2.0才可以 第2种方式是用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能 第3种方式是通过采用Vi
【.Net码农】C#读取计算机串口
http://blog.csdn.net/small5e4444/article/details/7199171 今天在改刷卡程序的时候,经理要求把计算机所有的COM口读出来,供程序界面选择。原来选择串口的时候写的是固定的数字,不太合理。在网上搜索了一下,大概有两种读取方法。一种是通过计算机注册表来读取串口信息,另外一种是用.NET下提供的SerialPort类读取。
使用.net的SerialPort串口监控控件接收串口数据
前述: 在一个项目中,需要从串口通信的磁卡读卡器中读取刷卡的卡号,以便后续的业务操作。该刷卡器的型号为:SMR-RU2,使用USB接入电脑,通过USB转串口,Windows会根据USB口分配器固定的串口号。本人使用了.net中自带的SerialPort串口监控控件来读取磁卡读卡器所读取的卡号,其解决方法如下: SerialPort简述:
VC++ .net 串口操作(简单的上位机串口操作)
因为我一直使用的是嵌入式芯片,比较擅长C,一直想写点j
python serial 获取所有的串口名称
#!/usr/bin/env python # -*- coding: utf-8 -* import serial import serial.tools.list_ports port_list = list(serial.tools.list_ports.comports()) if len(port_list) <= 0: print "The Ser
获取计算机所有串口
多数涉及串口操作的软件,在让用户选择串口时,只会机械的给出从COM1到COM16的组合框。但实际上可能有大于COM16的串口号,于是想编程来获取实际的串口号再列出来。看起来很难,其实关于串口的信息保存了注册表中,代码如下: void CPageSetCom::ShowComm() { long lReg; HKEY hKey; DWORD MaxValueLeng
c#获取本机的串口列表
1.定义一个字符串数组,并将获取到的电脑上串口名字赋值给它。 string[] ArryPort = SerialPort.GetPortNames(); 2.将一个组合框的内容清除 cmbPort.Items.Clear(); 3。将数组中的值添加到组合框中 for (int i = 0; i < ArryPort.Length; i++) {
获取串口数据 (C#)
1. 程序分享下载 点击 2. 效果图 如下 3. 关键代码 private void buttonOpenClose_Click(object sender, EventArgs e) { try { labmsg.Text = "";
.net开发教你通过串口发送数据
新建一个工程项目,命名为Test,默认窗体为Form1。 2 在Form1窗体中,添加两个Button控件,分别用于执行发送数据与接受数据,添加两个TextBox控件,用于输入发送数据与显示接收数据。 3 这个比较重要,一般用的较少,向窗体中添加一个serialPort1控件,如图所示: