Qt获取可用串口号

2 篇文章 0 订阅

主页面头文件添加:

private:
///*获取串口号相关
    QStringList m_listcomboName;
    HKEY hKey;
    LPCWSTR subkey;
    wchar_t keyname[256]; //键名数组
    char keyvalue[256];  //键值数组
    DWORD keysize,type,valuesize;
    int indexnum;
///*获取串口号相关

///*获取串口号相关
public:
    QString getcomm(int index,QString keyorvalue); //读取键名
///*获取串口号相关

主界面cpp文件
1、添加getcomm函数定义:

///*获取串口号相关
QString MainWindow::getcomm(int index,QString keyorvalue)
//index为索引号,keyorvalue为选择返回值应该为key还是value
{
    QString commresult;
    if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("HARDWARE\\DEVICEMAP\\SERIALCOMM"),0,KEY_READ,&hKey)!=0)
    {
        QString error="Cannotopenregedit!";//无法打开注册表时返回error
        return error;
    }//if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_READ,&hKey)!=0)
    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 = keyname[i];
            keymessage.append(message);
        }//for(inti=0;i<=keysize;i++)    读取键名
        for(int j=0;j<valuesize;j++)
        {
             if(keyvalue[j]!=0x00)
             {
                 valuemessage.append(keyvalue[j]);
             }
        }//for(intj=0;j<valuesize;j++)读取键值
        if(keyorvalue=="key")
        {
             commresult=keymessage;
        }
        if(keyorvalue=="value")
        {
             commresult=valuemessage;
        }
    }
    else
    {
         commresult="nokey";
    }//if(::RegEnumValue(hKey,indexnum,keyname,&keysize,0,&type,(BYTE*)keyvalue,&valuesize)==0)列举键名和值
    return commresult;
    ::RegCloseKey(hKey);//关闭注册表
}
///*获取串口号相关

2、主函数添加代码


///*获取串口号相关
    QString path="HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\SERIALCOMM\\";
    QSettings * settings = new QSettings(path,QSettings::NativeFormat);
    QStringList key = settings->allKeys();
    int num=(int)key.size();
    QString value;
    for(int i=0;i<num;i++)
    {
        value = getcomm(i,"value");
        m_listcomboName<<value;

        //添加文本浏览器textBrowser中
        ui->textBrowser->insertPlainText(value+"\r\n");
        //添加到下拉选择框portNameComboBox中
        ui->portNameComboBox->addItem(value);
    }
///*获取串口号相关

参考链接:
http://blog.csdn.net/cliffordl/article/details/14450469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值