注册 登录
编程论坛 VC++/MFC

如何在win7下,用vc实现自动获取当前可用的串口号?

jxlcxm 发布于 2013-05-06 20:58, 4164 次点击
这是我在网上找到的实现方法,这样做是否可以,我调试运行的时候,插上一个串口后,设备管理器上有显示是COM3,但是第一条打开注册表的函数,返回值一直是2,这说明
没有打开注册表,怎么会这样了?如何实现自动获取当前计算机上的有效串口?
unsigned int CServoCtrlDlg::GetSerialPort()
{  
    HKEY hkey;
    LONG lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T( "HARDWARE\\DEVICEMAP\\SERIALCOMM "), NULL, KEY_READ, &hkey);
    if (lRes == ERROR_SUCCESS)
    {
        TCHAR tchKey[MAX_PATH];
        TCHAR tchValue[20];
        DWORD dwIndex = 0;
        DWORD dwType = REG_SZ;
        for(; dwIndex <= 20 ; dwIndex++)
        {
            DWORD dwCount = MAX_PATH;
            DWORD dwVCount = 20;
            lRes = RegEnumValue(hkey, dwIndex, tchKey, &dwCount, NULL, &dwType, (LPBYTE)tchValue, &dwVCount);
            if(lRes == ERROR_SUCCESS)
            {
                RegCloseKey(hkey);
                return (dwIndex + 1);
            }
        }
    }
    AfxMessageBox("在HKEY_LOCAL_MACHINE:Hardware\\DeviceMap\\SerialComm里找不到串口!!!");
    RegCloseKey(hkey);
    return 0;
   
 }
0 回复
1