2013-08-15 6 views
0

Я пытаюсь получить подробную информацию о Dongle (GSM-модемом) с использованием библиотеки LibUSBDotNet. Here it isИдентификатор продукта и идентификатор поставщика

Ниже моя попытка

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using LibUsbDotNet; 
using LibUsbDotNet.Descriptors; 
using LibUsbDotNet.DeviceNotify; 
using LibUsbDotNet.Info; 
using LibUsbDotNet.LibUsb; 
using LibUsbDotNet.LudnMonoLibUsb; 
using LibUsbDotNet.Main; 
using LibUsbDotNet.WinUsb; 

namespace LibUsbDotNet_Test1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //RetrieveUSBDevices(12d1, 140c); 
     } 

     public static void RetrieveUSBDevices(int vid, int pid) 
     { 
      var usbFinder = new UsbDeviceFinder(vid, pid); 
      var usbDevices = new UsbRegDeviceList(); 
      var en = usbDevices.GetEnumerator(); 

      while (en.MoveNext()) 
      { 
       Console.WriteLine(en.ToString()); 
      } 


     } 
    } 
} 

Unfortunatly, похоже, мне нужно передать Product ID (PID) и Vensor ID (VID) в виде целых чисел. Но мои PID и VID содержат письма! Посмотрите нижеприведенное изображение, в котором отображаются сведения о моем устройстве.

enter image description here

Как я могу передать мой PID и VID в этом случае? Или я делаю что-то неправильно? Мне нужно напечатать описание устройства и получить «имя порта» ключа, и именно поэтому я все это делаю для его идентификации. Пожалуйста помоги.

ответ

1

Казалось бы, VendorID и ProductID являются шестнадцатеричными числами, но библиотека, которую вы используете, требует целочисленных чисел.

string productID = "140c"; 
int pid = Convert.ToInt32(productID, 16); 
// or if you don't like "base 16" and want to have self-documenting code: 
pid = Int32.Parse(productID, System.Globalization.NumberStyles.HexNumber);