CVI 串口搜索代碼


static int Str2Num(char *str)
{
int index = 0;//字符串索引
int port  = 0;//提取整數
do{
if(('0' <= str[index]) && (str[index]<='9')){
port = port * 10 + (str[index]-'0');
}
index++;
}while(str[index] != '\0');
return (port);
}


void SerlSearch(void)
{
HKEY hKey;
TCHAR tchkey[MAX_PATH];
TCHAR tchName[MAX_PATH];
DWORD dwCount;
DWORD dwVCount;
DWORD dwIndex = 0;
DWORD dwType = REG_SZ;

LPCTSTR data_Set = "HARDWARE\\DEVICEMAP\\SERIALCOMM\\";
long lRes = RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS|KEY_READ, &hKey);

if(lRes != ERROR_SUCCESS)
return;
serlCnt = 0;

do{
dwCount  = MAX_PATH;
dwVCount = MAX_PATH;
lRes  = RegEnumValue(hKey, dwIndex, tchkey, &dwCount, NULL, &dwType, tchName, &dwVCount);
if((lRes == ERROR_SUCCESS)||(lRes == ERROR_MORE_DATA)){
  strcpy (serlName[serlCnt], tchName); //串口名
serlPort[serlCnt] = Str2Num(tchName);   //Port
serlCnt++;
if(SERL_MAX_SIZE <= serlCnt){
break;
}
dwIndex++;
  }
}while((lRes == ERROR_SUCCESS)||(lRes == ERROR_MORE_DATA));

//添加無效串口
serlPort[serlCnt] = NULL_PORT;
strcpy (serlName[serlCnt], "COM_OFF");
serlBaud[serlCnt] = 115200;
serlCnt++;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章