gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 12:27:37 25 4
gpt4 key购买 nike

我有一个通过 USB 连接的 GSM 调制解调器。调制解调器创建 2 个串行端口。第一个自动连接到调制解调器,第二个在设备管理器中显示为“HUAWEI Mobile Connect - 3G PC UI Interface (COM6)”

第二个端口用于从调制解调器获取重要信息,例如信号质量;发送和接收短信;以及许多其他功能。

我正在编写一个应用程序,它将包含第二个端口提供的一些功能。我需要的是一种可靠的方法来识别哪个 COM 端口是备用端口。迭代端口并检查对“ATE0”的响应是不够的。调制解调器的端口通常是编号较小的端口,当没有激活​​拨号连接时,它会像第二个端口一样响应“ATE0”。

我想做的是迭代端口并检查它们的友好名称,如设备管理器中所示。这样我就可以将应用程序中的端口链接到设备管理器中标记为“HUAWEI Mobile Connect - 3G PC UI 接口(interface)(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, &devInfoData, SPDRP_FRIENDLYNAME, NULL, friendlyName, sizeof(friendlyName), NULL))
{
strFriendlyNames += (LPCTSTR)friendlyName;
strFriendlyNames += '\n';
}

它找到设备的名称。

希望这能帮助您朝着正确的方向前进。

关于windows - 如何在 Windows 中获取 COM 端口的友好名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/304986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com