来自Windows.Devices.Enumeration.DeviceInformation的COM端口号

本文关键字:COM 口号 DeviceInformation Windows Devices Enumeration 来自 | 更新日期: 2023-09-27 18:15:23

是否有办法通过DeviceInformation获得设备的COM端口号?当我通过设备管理器查看它们时,我可以看到COM端口号。

我刚刚遇到了几个设备,没有列出COM端口号作为Name属性的一部分。我把其中两个插进去了,没有办法区分它们。理想情况下,我希望看到一个COM端口。有别的方法可以得到这些信息吗?

string _serialSelector = SerialDevice.GetDeviceSelector();
DeviceInformationCollection tempInfo = await DeviceInformation.FindAllAsync(_serialSelector);
    if (tempInfo.Count > 0)
    {
        foreach (var efefe in tempInfo)
        {
            if (efefe.Kind.Equals(DeviceInformationKind.DeviceInterface))
            {
                //efefe.Name                     
            }
        }
    }

来自Windows.Devices.Enumeration.DeviceInformation的COM端口号

您已经完成了大部分工作,然后您需要使用efefe的id来使用SerialDevice获取SerialDevice对象。frommidasync | frommidasync方法。

下面是演示:

string _serialSelector = SerialDevice.GetDeviceSelector();
var infos = await DeviceInformation.FindAllAsync(_serialSelector);
foreach (var info in infos)
{
    var serialDevice = await SerialDevice.FromIdAsync(info.Id);
    if (serialDevice != null)
    {
        var port = serialDevice.PortName;
        Debug.WriteLine(port.ToString());
    }
}

请不要忘记在manifest中添加DeviceCapability:

<DeviceCapability Name="serialcommunication">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>