如何使用WMI获取RFID阅读器的物理设备ID?

时间:2019-02-04 07:21:44

标签: c# serial-port rfid

使用C#中的WMI通过串行端口读取RFID的物理设备对象名称

我正在设置一个C#代码以读取来自不同RFID阅读器的信号。因此,我想获取物理设备ID以识别哪个设备正在发送哪个信号。因此,我试图通过WMI读取设备信息,该类具有13xx以上的类。

代码

ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * From Win32_PnPEntity");
ManagementObjectCollection objCollection = objSearcher.Get();

foreach (ManagementObject obj in objCollection)
{
    string info = "HardwareID : "+obj["HardwareID"];
}

我希望每个RFID阅读器的信息都具有唯一的物理ID。

1 个答案:

答案 0 :(得分:1)

HardwareID是string[]而不是string,因此要获取,您必须执行以下操作

var objSearcher = new ManagementObjectSearcher("Select * From Win32_PnPEntity");
var objCollection = objSearcher.Get();

foreach (var queryObj in objSearcher.Get())
{
    Console.WriteLine("Name {0}" , queryObj["Name"]);
    if (queryObj["HardwareID"] == null)
         Console.WriteLine("HardwareID: {0}", queryObj["HardwareID"]);
    else
    {
         var arrHardwareID = (String[])(queryObj["HardwareID"]);                    
         foreach (var arrValue in arrHardwareID)
         {
             Console.Write("HardwareID: {0}\t", arrValue);
         }
    }
}

此外,您始终可以使用任何NuGet软件包来简化您的工作,例如KexlaORMi