在 C# 中使用 WMI 通过串行端口读取 RFID 的物理设备对象名称
我正在设置一个 C# 代码来读取来自不同 RFID 阅读器的信号。因此,我想获取物理设备 ID 以识别哪个设备正在发送哪个信号。所以我正在尝试通过具有超过 13xx 类的 WMI 读取设备信息。
代码。
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * From Win32_PnPEntity");
ManagementObjectCollection objCollection = objSearcher.Get();
foreach (ManagementObject obj in objCollection)
{
string info = "HardwareID : "+obj["HardwareID"];
}
我希望每个RFID阅读器的信息都是唯一的物理ID。
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 包来简化您的工作,例如 Kexla 或 ORMi