加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Windows中获取COM端口的友好名称?

发布时间:2020-12-14 04:34:41 所属栏目:Windows 来源:网络整理
导读:我有一个GSM调制解调器通过USB连接.调制解调器创建2个串行端口.第一个是自动连接到调制解调器,第二个在设备管理器中显示为“HUAWEI Mobile Connect – 3G PC UI界面(COM6)” 第二个端口用于从调制解调器获取重要信息,如信号质量;发送和接收短信;和一大堆其他
我有一个GSM调制解调器通过USB连接.调制解调器创建2个串行端口.第一个是自动连接到调制解调器,第二个在设备管理器中显示为“HUAWEI Mobile Connect – 3G PC UI界面(COM6)”

第二个端口用于从调制解调器获取重要信息,如信号质量;发送和接收短信;和一大堆其他功能.

我正在编写一个应用程序,其中将包含第二个端口提供的一些功能.我需要的是确定哪个COM端口是备用的方法.重复端口并检查对“ATE0”的响应是不够的.调制解调器的端口通常是较小的端口,当拨号连接不活动时,它将响应与第二个端口相同的“ATE0”.

我正在想的是重复端口并检查其友好名称,如在设备管理器中所示.这样我可以将应用程序中的端口连接到设备管理器中标有“HUAWEI Mobile Connect – 3G PC UI界面(COM6)”的端口.我没有找到任何信息,这将允许我以编程方式获得该名称.

很久以前,我为一个客户端写了一个实用程序来做这个,但是对于一个GPS而不是一个调制解调器.

我刚刚看过它,跳出来的可能有帮助的是:

GUID guid = GUID_DEVCLASS_PORTS;

SP_DEVICE_INTERFACE_DATA interfaceData;
ZeroMemory(&interfaceData,sizeof(interfaceData));
interfaceData.cbSize = sizeof(interfaceData);

SP_DEVINFO_DATA devInfoData;
ZeroMemory(&devInfoData,sizeof(devInfoData));
devInfoData.cbSize = sizeof(devInfoData);

if(SetupDiEnumDeviceInfo(
    hDeviceInfo,// Our device tree
    nDevice,// The member to look for
    &devInfoData
    ))
{
    DWORD regDataType;

    BYTE hardwareId[300];
    if(SetupDiGetDeviceRegistryProperty(hDeviceInfo,&devInfoData,SPDRP_HARDWAREID,&regDataType,hardwareId,sizeof(hardwareId),NULL))
    {
...

(您将这个位称为递增nDevice的循环)

接着

BYTE friendlyName[300];
        if(SetupDiGetDeviceRegistryProperty(hDeviceInfo,SPDRP_FRIENDLYNAME,NULL,friendlyName,sizeof(friendlyName),NULL))
        {
            strFriendlyNames += (LPCTSTR)friendlyName;
            strFriendlyNames += 'n';
        }

它找到设备的名称.

希望这将有助于您朝着正确的方向发展.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读