如何获取系统的串口信息

我们在windows编程时经常会使用串口,现在很多PC已经没有内置串口了,很多是使用USB转RS232的东东实现,一般情况下,我们都会有一个串口设置的对话框,包含串口号,波特率,数据位等。

程序在运行时如何能否知道到底有哪些串口呢?下面是从网上下载的一段程序,使用C++ builder 2009下调用,还是好用的,贴出来,供有需要的人使用。

/* 函数名 : 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值