VC中如果知道电脑上有几个串口可用?

如题,请给出代码~!在线等.... 如题,请给出代码~!
在线等.
展开
 我来答
魔高丈
推荐于2016-05-22 · TA获得超过9506个赞
知道大有可为答主
回答量:2066
采纳率:0%
帮助的人:3467万
展开全部
//枚举串口
//参数: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;
}
走进数理化
推荐于2016-04-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:4002
采纳率:75%
帮助的人:613万
展开全部
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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e9042513a
2009-03-03 · TA获得超过6984个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:3503万
展开全部
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);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式