3个回答
展开全部
//枚举串口
//参数:bEnablePort,哪个串口有效,bEnablePort[0]表示COM1,bEnablePort[n-1]表示COMn
//返回值:有效的串口个数
int EnumAllComPort(bool* bEnablePort)
{
int nCommSum = 0;//串口个数
HANDLE hCom;
CString str;
for(int i=1;i<=256;i++)
{
str.Format(_T("COM%d"),i);
hCom = CreateFile(str, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
bEnablePort[i-1] = false;
continue;
}
else
{
bEnablePort[i-1] = true;
}
CloseHandle(hCom);
nCommSum++;
}
return nCommSum;
}
//参数:bEnablePort,哪个串口有效,bEnablePort[0]表示COM1,bEnablePort[n-1]表示COMn
//返回值:有效的串口个数
int EnumAllComPort(bool* bEnablePort)
{
int nCommSum = 0;//串口个数
HANDLE hCom;
CString str;
for(int i=1;i<=256;i++)
{
str.Format(_T("COM%d"),i);
hCom = CreateFile(str, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
bEnablePort[i-1] = false;
continue;
}
else
{
bEnablePort[i-1] = true;
}
CloseHandle(hCom);
nCommSum++;
}
return nCommSum;
}
展开全部
1、一般PC电脑本身就自带1个,需要多个的话需要用扩展卡。
2、程序:
//枚举串口
//参数:bEnablePort,哪个串口有效,bEnablePort[0]表示COM1,bEnablePort[n-1]表示COMn
//返回值:有效的串口个数
int EnumAllComPort(bool* bEnablePort)
{
int nCommSum = 0;//串口个数
HANDLE hCom;
CString str;
for(int i=1;i<=256;i++)
{
str.Format(_T("COM%d"),i);
hCom = CreateFile(str, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
bEnablePort[i-1] = false;
continue;
}
else
{
bEnablePort[i-1] = true;
}
CloseHandle(hCom);
nCommSum++;
}
return nCommSum;
}
2、程序:
//枚举串口
//参数:bEnablePort,哪个串口有效,bEnablePort[0]表示COM1,bEnablePort[n-1]表示COMn
//返回值:有效的串口个数
int EnumAllComPort(bool* bEnablePort)
{
int nCommSum = 0;//串口个数
HANDLE hCom;
CString str;
for(int i=1;i<=256;i++)
{
str.Format(_T("COM%d"),i);
hCom = CreateFile(str, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (hCom == INVALID_HANDLE_VALUE)
{
bEnablePort[i-1] = false;
continue;
}
else
{
bEnablePort[i-1] = true;
}
CloseHandle(hCom);
nCommSum++;
}
return nCommSum;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
HKEY hKey;
int rtn;
rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm",
NULL, KEY_READ, &hKey);
if( rtn == ERROR_SUCCESS) // 打开串口注册表
{
int i=0;
char portName[256],commName[256];
DWORD dwLong,dwSize;
while(1)
{
dwSize = sizeof(portName);
dwLong = dwSize;
rtn = RegEnumValue( hKey, i, portName, &dwLong,
NULL, NULL, (PUCHAR)commName, &dwSize );
if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口
break;
i++;
}
RegCloseKey(hKey);
}
int rtn;
rtn = RegOpenKeyEx( HKEY_LOCAL_MACHINE, "Hardware\\DeviceMap\\SerialComm",
NULL, KEY_READ, &hKey);
if( rtn == ERROR_SUCCESS) // 打开串口注册表
{
int i=0;
char portName[256],commName[256];
DWORD dwLong,dwSize;
while(1)
{
dwSize = sizeof(portName);
dwLong = dwSize;
rtn = RegEnumValue( hKey, i, portName, &dwLong,
NULL, NULL, (PUCHAR)commName, &dwSize );
if( rtn == ERROR_NO_MORE_ITEMS ) // 枚举串口
break;
i++;
}
RegCloseKey(hKey);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询