如何在 .NET 应用程序中填充 UsbRegDeviceList 运行 LibUsbDotNet "Getting Started Example"
How to populate UsbRegDeviceList in a .NET app running LibUsbDotNet "Getting Started Example"
当我运行它时,allDevices列表是空的。
我开始了一个新的 VB.NET 控制台项目,并安装了 Nuget LibUsbDotNet。
我的代码是这样的:
Imports System
Imports LibUsbDotNet
Imports LibUsbDotNet.Info
Imports LibUsbDotNet.Main
Imports System.Collections.ObjectModel
Module Module1
Public MyUsbDevice As UsbDevice
Public Sub Main(args As String())
' Dump all devices and descriptor information to console output.
Dim allDevices As UsbRegDeviceList = UsbDevice.AllDevices
For Each usbRegistry As UsbRegistry In allDevices
If usbRegistry.Open(MyUsbDevice) Then
Console.WriteLine(MyUsbDevice.Info.ToString())
For iConfig As Integer = 0 To MyUsbDevice.Configs.Count - 1
Dim configInfo As UsbConfigInfo = MyUsbDevice.Configs(iConfig)
Console.WriteLine(configInfo.ToString())
Dim interfaceList As ReadOnlyCollection(Of UsbInterfaceInfo) = configInfo.InterfaceInfoList
For iInterface As Integer = 0 To interfaceList.Count - 1
Dim interfaceInfo As UsbInterfaceInfo = interfaceList(iInterface)
Console.WriteLine(interfaceInfo.ToString())
Dim endpointList As ReadOnlyCollection(Of UsbEndpointInfo) = interfaceInfo.EndpointInfoList
For iEndpoint As Integer = 0 To endpointList.Count - 1
Console.WriteLine(endpointList(iEndpoint).ToString())
Next
Next
Next
End If
Next
' Free usb resources.
' This is necessary for libusb-1.0 and Linux compatibility.
UsbDevice.[Exit]()
' Wait for user input..
Console.ReadKey()
End Sub
End Module
我的桌面 USB 设备...
虽然我最近升级到 Win 10,但我认为我的台式机太旧了。所以解决问题,我使用了新的 Win 10 笔记本电脑,安装了 运行 过滤器(子)驱动程序并选择我笔记本电脑的网络摄像头(作为测试 VID 和 PID),安装 libUsb-Win32,创建一个 .NET 控制台项目(我同时使用 VB 和 C#),执行 VS > proj > Refs > NUGET > 浏览 LibUsbDotNet,安装它,粘贴了 Sourceforge 的 libUsbDotNet 中的第一个示例,它工作得很好:它连接到网络摄像头驱动程序(由过滤器子驱动程序选择),并读取正确的 VID 和 PID。 (示例报告错误,因为网络摄像头驱动程序未响应轮询,但这是预期的)。
当我运行它时,allDevices列表是空的。
我开始了一个新的 VB.NET 控制台项目,并安装了 Nuget LibUsbDotNet。
我的代码是这样的:
Imports System
Imports LibUsbDotNet
Imports LibUsbDotNet.Info
Imports LibUsbDotNet.Main
Imports System.Collections.ObjectModel
Module Module1
Public MyUsbDevice As UsbDevice
Public Sub Main(args As String())
' Dump all devices and descriptor information to console output.
Dim allDevices As UsbRegDeviceList = UsbDevice.AllDevices
For Each usbRegistry As UsbRegistry In allDevices
If usbRegistry.Open(MyUsbDevice) Then
Console.WriteLine(MyUsbDevice.Info.ToString())
For iConfig As Integer = 0 To MyUsbDevice.Configs.Count - 1
Dim configInfo As UsbConfigInfo = MyUsbDevice.Configs(iConfig)
Console.WriteLine(configInfo.ToString())
Dim interfaceList As ReadOnlyCollection(Of UsbInterfaceInfo) = configInfo.InterfaceInfoList
For iInterface As Integer = 0 To interfaceList.Count - 1
Dim interfaceInfo As UsbInterfaceInfo = interfaceList(iInterface)
Console.WriteLine(interfaceInfo.ToString())
Dim endpointList As ReadOnlyCollection(Of UsbEndpointInfo) = interfaceInfo.EndpointInfoList
For iEndpoint As Integer = 0 To endpointList.Count - 1
Console.WriteLine(endpointList(iEndpoint).ToString())
Next
Next
Next
End If
Next
' Free usb resources.
' This is necessary for libusb-1.0 and Linux compatibility.
UsbDevice.[Exit]()
' Wait for user input..
Console.ReadKey()
End Sub
End Module
我的桌面 USB 设备...
虽然我最近升级到 Win 10,但我认为我的台式机太旧了。所以解决问题,我使用了新的 Win 10 笔记本电脑,安装了 运行 过滤器(子)驱动程序并选择我笔记本电脑的网络摄像头(作为测试 VID 和 PID),安装 libUsb-Win32,创建一个 .NET 控制台项目(我同时使用 VB 和 C#),执行 VS > proj > Refs > NUGET > 浏览 LibUsbDotNet,安装它,粘贴了 Sourceforge 的 libUsbDotNet 中的第一个示例,它工作得很好:它连接到网络摄像头驱动程序(由过滤器子驱动程序选择),并读取正确的 VID 和 PID。 (示例报告错误,因为网络摄像头驱动程序未响应轮询,但这是预期的)。