一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VC++ 怎么實現(xiàn)自動查找連接電腦COM口

 筱肆 2013-12-18
: 我的異常網(wǎng)VC/MFC ? VC++ 怎么實現(xiàn)自動查找連接電腦COM口

VC++ 怎么實現(xiàn)自動查找連接電腦COM口

www.MyException.Cn   發(fā)布于:2012-05-27 05:42:30   瀏覽:283次
VC++ 如何實現(xiàn)自動查找連接電腦COM口
請教下,我用VC6.0編寫的軟件使用的串口通信,每次安裝后都需要將電腦的上COM口和軟件里的COM口改成一致,才能使用USB轉(zhuǎn)串口的數(shù)據(jù)線實現(xiàn)通信。我想實現(xiàn)軟件自動識別電腦當前是在占用那個COM口, 這樣該如何實現(xiàn)呢?

------解決方案--------------------

查注冊表。
HKEY hKey;
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM",NULL,KEY_ALL_ACCESS,&hKey)==ERROR_SUCCESS)//打開注冊表成功
{
//while(ERROR_SUCCESS==::RegEnumValue(
DWORD idx, lenName = 100, dwType;
idx = 0;
char valName[100];
memset(valName,'\0',sizeof(valName));

while (RegEnumValue(hKey,                // 讀取hkey 的所有子鍵
idx++,
(LPSTR)valName,
&lenName,
NULL,
&dwType,
NULL,
NULL) != ERROR_NO_MORE_ITEMS)
{
CString strSub=valName; //子鍵名
BYTE strCom[80]; //子鍵值
memset(strCom,0,80);
DWORD type=REG_SZ, cbData=80; //子鍵類型字符串
if(RegQueryValueEx(hKey, strSub, NULL,&type,strCom, &cbData)==ERROR_SUCCESS)//讀取子鍵值
{
this->m_cmb.InsertString(m_cmb.GetCount(),(LPCTSTR)strCom);//添加串口名到列表
}
memset(valName,0,sizeof(valName));
lenName = 100;              // 這里是關鍵,因為每次循環(huán)lenName的值都會被RegEnumValue更改,
}



}
else
{
MessageBox("查詢串口失??!","提示",MB_ICONERROR);
}

------解決方案--------------------

方法很多
1:你可以自己寫個枚舉函數(shù)枚舉所有的口,如果可以打開,則發(fā)送命令下去,返回正常則是你要的設備,關閉枚舉。
2:可以通過打開注冊表來獲取已插入的串口號,然后發(fā)送命令進行匹配,注冊表獲取串口號方法如下:
C/C++ code
    //////////////從注冊表中讀取用戶的串口信息/////////
    HKEY hKEY;
    LPCTSTR data_Set="HARDWARE\\DEVICEMAP\\SERIALCOMM"; 
    if(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set, 0, KEY_READ, &hKEY))    //打開注冊表
    {
        AfxMessageBox("注冊表錯誤: 無法打開有關的hKEY!"); 
        return;
    } 
    long i;
    LPBYTE Data_Get=new BYTE [10];
    for (i=0; ;i++) //中間為空,沒有進行i值的比較
    {
        TCHAR szValueName[_MAX_PATH + 1];
        DWORD dwValueName = sizeof(szValueName);
        LPDWORD lpType = 0;
        
        DWORD cbData = 10;
        long ret = (RegEnumValue(hKEY,i,szValueName,&dwValueName,
            NULL,lpType,Data_Get,&cbData));
        if (ret)      
            break;
        for (int j=0; j<10; j++)    
        {
            strPort[i].Format(_T("%s"),Data_Get);
            
        }
        
        Port_Num = i+1;
    
    }
    delete[] Data_Get;
    ::RegCloseKey(hKEY);    //關閉注冊表
    ////////////////////////////////////////////////////////

------解決方案--------------------
看看這篇文章會不會對你有幫助
http://blog.csdn.net/xianglitian/article/details/7186455

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲精品福利入口在线| 高清不卡视频在线观看| 国产视频在线一区二区| 欧美熟妇喷浆一区二区| 亚洲精选91福利在线观看| 日本av一区二区不卡| 99一级特黄色性生活片| 久久精品国产在热久久| 国产精品自拍杆香蕉视频| 亚洲男人的天堂色偷偷| 国产又粗又深又猛又爽又黄| 亚洲精品黄色片中文字幕| 开心激情网 激情五月天| 精品少妇一区二区三区四区| 日本女优一色一伦一区二区三区| 九九视频通过这里有精品| 日韩欧美一区二区久久婷婷| 国产精品日韩欧美一区二区 | 国产又猛又大又长又粗| 91人妻久久精品一区二区三区| 中文字幕日韩精品人一妻| 日韩成人免费性生活视频| 97人摸人人澡人人人超碰| 色一情一乱一区二区三区码| 亚洲美女国产精品久久| 精品熟女少妇一区二区三区| 日韩熟妇人妻一区二区三区| 久久亚洲午夜精品毛片| 欧美日韩国产二三四区| 免费观看在线午夜视频| 国产欧美日韩精品成人专区| 久久精品a毛片看国产成人| 亚洲精品福利视频你懂的| 91日韩欧美国产视频| 国产高清一区二区不卡| 十八禁日本一区二区三区| 日韩欧美国产亚洲一区| 久久99精品日韩人妻| 日本在线视频播放91| 一本久道久久综合中文字幕| 成人三级视频在线观看不卡|