传递产品ID和供应商ID

时间:2013-08-15 05:14:00

标签: c# .net visual-studio-2010 port libusb

我正在尝试使用LibUSBDotNet库(here it is)获取加密狗(GSM调制解调器)的详细信息。

以下是我的尝试

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());
            }


        }
    }
}

不幸的是,我似乎需要将产品ID(PID)和Vensor ID(VID)作为整数传递。但我的PID和VID包含字母!请查看下面的图片,其中显示了有关我的设备的详细信息。

enter image description here

在这种情况下,如何传递PID和VID?或者我做错了什么?我需要打印设备描述并获取加密狗的“端口名称”,这就是为什么我要做所有这些来识别它。

1 个答案:

答案 0 :(得分: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);