Как получить физические идентификаторы устройств считывателей RFID с помощью WMI? - PullRequest
0 голосов
/ 04 февраля 2019

Чтение имени объекта физического устройства RFID через последовательный порт с использованием WMI в C #

Я настраиваю код C # для чтения сигналов от различных считывателей RFID.Итак, я хочу получить идентификатор физического устройства, чтобы узнать, какое устройство отправляет какой сигнал.Поэтому я пытаюсь прочитать информацию об устройстве через 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 уникальна.

1 Ответ

0 голосов
/ 05 февраля 2019

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

...