两种枚举串口的方式
来源:互联网 发布:网络直播平台哪个最火 编辑:程序博客网 时间:2024/05/16 12:33
以下是C++ Builder下调试过的两种枚举系统串口的代码
/* 函数名 : GetSerialPortsReg
* 说 明 : 通过注册表枚举系统串口数量,并列出所有串口的系统名
*
* 参 数 : pListStr, 串口名称列表
* 返回值 : int, 系统串口个数
*/
int GetSerialPortsReg(char (*pListStr)[80])
{
HKEY hKey;
LPCTSTR data_Set="HARDWARE//DEVICEMAP//SERIALCOMM//";
long ret0 = (::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKey));
if(ret0 != ERROR_SUCCESS)
{
return -1;
}
int i = 0;
CHAR Name[25];
UCHAR szPortName[80];
LONG Status;
DWORD dwIndex = 0;
DWORD dwName;
DWORD dwSizeofPortName;
DWORD Type;
dwName = sizeof(Name);
dwSizeofPortName = sizeof(szPortName);
do
{
Status = RegEnumValue(hKey, dwIndex++, Name, &dwName, NULL, &Type,
szPortName, &dwSizeofPortName);
if((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA))
{
if (pListStr != NULL)
{
memcpy(*(pListStr + i), (LPCSTR)szPortName, 80);
}
i++;
}
} while((Status == ERROR_SUCCESS)||(Status == ERROR_MORE_DATA));
RegCloseKey(hKey);
return i;
}
/* 函数名 : GetSerialPortsSys
* 说 明 : 通过系统信息枚举系统串口数量,并列出所有串口的系统名
*
* 参 数 : pListStr, 串口名称列表
* 返回值 : int, 系统串口个数
*/
int GetSerialPortsSys(char (*pListStr)[80])
{
DWORD pcReturned = 0;
DWORD pcbNeeded = 0;
BYTE *outb = NULL;
EnumPorts(NULL, 2, outb, 0, &pcbNeeded, &pcReturned);
outb = new byte[pcbNeeded];
EnumPorts(NULL, 2, &outb[0], pcbNeeded, &pcbNeeded, &pcReturned);
PORT_INFO_2 *portsArray ;
portsArray = (PORT_INFO_2 *)(outb);
for (unsigned int i = 0; i< pcReturned; i++)
{
if (((AnsiString)(*(portsArray + i)).pPortName).Pos("COM") > 0)
{
memcpy(*(pListStr + i), (*(portsArray + i)).pPortName, 80);
}
}
return pcReturned;
}
- 两种枚举串口的方式
- 枚举进程的两种方式
- 浅谈FPGA串口通信数据解析的两种方式
- STM32使用串口IDLE中断的两种接收不定长数据的方式
- 串口枚举的4种方法
- 枚举系统的串口
- VB2008的串口枚举
- 魔方机器人之下位机编程-----两种串口通信方式的比较
- 关于串口通讯查询与中断两种方式
- VC++的两种串口通讯方法
- 枚举窗口的两种方法
- 枚举定义的两种方法
- 枚举Enum的两种用法
- 两种“两数互换的方式”
- 枚举 window 系统串口的几种方法
- include 的两种方式
- 抽象的两种方式
- 共享的两种方式
- 谈Delphi编程中“流”的应用
- 怎么让自己更上一层楼?
- [引用]GCC简介
- Runes - 神符一览
- 成功者十三个价值连城的习惯
- 两种枚举串口的方式
- 如何使createPopup中的input可输入?
- ATL介绍
- 如何使用 SUS 执行修补程序管理
- 如何在JavaScript中调用MFC的ActiveX控件的方法
- 2005-11-16(多云转晴)
- 马云加入搜索人才争夺战 承诺发给员工期权 (转:csdn)
- 欧洲中世纪名剑兵器谱
- JDK1.5新特性一览--转