打开注册表
成都创新互联主营长清网站建设的网络公司,主营网站建设方案,重庆APP开发公司,长清h5小程序开发搭建,长清网站营销推广欢迎长清等地区企业咨询菜单-》运行
输入regedit
到目录
HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\
中,该目录下有的com口表示系统当前存在的com
//获取系统串口注册表中index索引位置的键名或键值 //QString为value字符串时为获取键值,键值即com名 QString getcomm(int index, QString keyorvalue) { QString commresult = ""; QString strkey = "HARDWARE\\DEVICEMAP\\SERIALCOMM";//子键路径 int a = strkey.toWCharArray(subkey); subkey[a] = L'\0'; if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, KEY_READ|KEY_QUERY_VALUE, &hKey) != 0 ) { QMessageBox::question(NULL, QString("错误"), QString("注册表打开失败\r\n请检查注册表路径是否正确!")); } QString keymessage = "";//键名 QString message = ""; QString valuemessage = "";//键值 indexnum = index;//要读取键值的索引号 keysize = sizeof(keyname); valuesize = sizeof(keyvalue); if ( ::RegEnumValue(hKey, indexnum, keyname, &keysize, 0, &type, (BYTE*)keyvalue, &valuesize) == 0 ) { //读取键名 //for (int i = 0; i <keysize; i++) { message = QString::fromStdWString(keyname); keymessage.append(message); } //读取键值 for (int j = 0; j < valuesize; j++) { if (keyvalue[j] != 0x00 ) { valuemessage.append(keyvalue[j]); } } if ( keyorvalue == "key" ) { commresult = keymessage; } if ( keyorvalue == "value" ) { commresult = valuemessage; } } else { commresult = "nokey"; } ::RegCloseKey(hKey); //关闭注册表 return commresult; } //系统存在串口以及其他所有串口放入到comboxcomlist列表中 void init_comlist(void) { QString path = "HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM"; QSettings *settings = new QSettings(path, QSettings::NativeFormat); QStringList key = settings->allKeys(); //系统注册表中com存在的个数 int comkeycount = key.size(); //qDebug() << comkeycount << key; //2 ("/Device/Serial0", "/Device/VCP0") regcomlist.clear(); comboxcomlist.clear(); for ( int i = 0; i < comkeycount; i++ ) { //将注册表中有的com名字放入列表中 //qDebug() << getcomm(i, "key"); regcomlist << getcomm(i, "value"); //qDebug() << regcomlist.value(i); } qDebug() << regcomlist; qDebug() << create_user_virtual_comlist; qDebug() << create_private_virtual_comlist; //两种情况,第一种,系统注册表此时有虚拟串口的信息,那么要将保存系统注册表中串口信息的regcomlist列表中删除掉虚拟串口,create_user_virtual_comlist,create_private_virtual_comlist已经保存了上次的虚拟串口列表 //for ( int i = 0; create_user_virtual_comlist; ) //第二种,系统注册表此时没有虚拟串口信息,只有本机串口信息,那么就不需要删除 bool findflag = false; for ( int i = 0; i < MOST_VIRTUAL_COM_NUM; i++ )//combox组件中添加255个com { findflag = false; //遍历保存注册表中com的列表 for ( int j = 0 ; j < comkeycount; j++ ) { if ( QString::compare(regcomlist.value(j), QString("COM%1").arg(i + 1)) == 0 ) { comboxcomlist << QString(regcomlist.value(j) + QString(" (本机)")); findflag = true; break; } } if ( findflag == true ) continue; comboxcomlist << QString("COM%1").arg(i + 1); }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:Qt获取系统串口信息-创新互联
转载来源:https://www.cdcxhl.com/article32/cdoisc.html
成都网站建设公司_创新互联,为您提供网站建设、定制开发、虚拟主机、全网营销推广、动态网站、移动网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联