有几个串口情况下,怎么自动识别哪个串口是需要通信的设备?
void CDemoDlg::Getportname(CString *pPortName)
{
UpdateData(true);
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径 data_Set相关的hKEY
LPCTSTR data_Set="SYSTEM//ControlSet001//Enum//USB//Vid_067b&Pid_2303//5&2ef0ebdc&0&1//Device Parameters";
//访问注册表,hKEY则保存此函数所打开的键的句柄
long ret0=(::RegOpenKeyEx(HKEY_LOCAL_MACHINE,data_Set,0,KEY_READ,&hKEY));
if(ret0!=ERROR_SUCCESS)//如果无法打开hKEY,则中止程序的执行
{
AfxMessageBox("错误:无法打开有关的hKEY");
return;
}
//查询有关的数据
LPBYTE portname=new BYTE[80];//定义
DWORD type_1=REG_SZ;//定义数据类型
DWORD cbData_1=80;//定义数据长度
long ret1=::RegQueryValueEx(hKEY,"PortName",NULL,&type_1,portname,&cbData_1);
if(ret1!=ERROR_SUCCESS)
{
AfxMessageBox("错误:无法查询有关的注册表信息");
return;
}
//显示信息
*pPortName=CString(portname);
delete[] portname;
//程序结束,关闭打开的hKEY
::RegCloseKey(hKEY);
UpdateData(false);
}