简单地说:我想知道LibUsbDotNet是否可以读取和写入HID功能报告。
首先,我尝试使用带有以下示例代码的vid / pid找到我的设备
class Program
{
public static UsbDevice MyUsbDevice;
public static UsbDeviceFinder uFind = new UsbDeviceFinder(1234,4321);
static void Main(string[] args)
{
ErrorCode ec = ErrorCode.None;
try
{
// Find and open the usb device.
MyUsbDevice = UsbDevice.OpenUsbDevice(uFind);
// If the device is open and ready
if (MyUsbDevice == null) throw new Exception("Device Not Found.");
但我总是会找不到设备。
我已在“设备管理器>人机接口设备”下检查了我的设备是否存在。
如果有人可以建议正确的方法在c#中实现相同的目标,那会很有帮助。
以前我试图在python中实现相同的功能(使用PyUsb),但缺少示例和文档使我无望。
答案 0 :(得分:0)
在libUsbDotNet的安装文件夹中,有一个名为“inf-wizard.exe”的文件运行该app并安装libUsbDotNet使用的“假驱动程序”来查找驱动程序。
如果你找不到“inf-wizard.exe”,请尝试从这里下载libUsbDotNet:http://sourceforge.net/projects/libusbdotnet/
您可能必须使用设备管理器查找特定驱动程序的Pid和Vid(即使未找到驱动程序,也应显示Vid和Pid)
安装后将Pid和Vid转换为整数,此网站可能会有所帮助http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html
在代码ex:
中使用转换后的整数//Hex Values: Pid = 4D9; Vid = 1605;
public static UsbDeviceFinder uFind = new UsbDeviceFinder(1241, 5637);
Windows要求驱动程序与任何类型的硬件进行交换,这个过程在linux中要简单得多,请参阅link (connect hack)以便简单了解usb通信的工作原理。 (这是基于Linux的,但核心保持不变)