问题标签 [libusbdotnet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 部署与 USB 外围设备交互的软件
我对驱动程序开发非常陌生,最近阅读了有关使用LibUsbDotNet与 USB 外围设备通信的信息。
目前我正在开发一个小型库,用于与车辆内置的 OBD 接口进行交互。串行连接效果很好,但是因为我见过很多 USB 连接器,所以我想让人们在这个库中使用他们的 USB 连接器。
LibUsbDotNet的介绍页面说:
在 LibUsbDotNet 可以访问 Windows 操作系统上的 USB 设备之前,该设备必须安装有 WinUSB 或 libusb-win32 USB 驱动程序。可选地,libusb-win32 具有作为过滤器服务运行的独特能力。启用过滤服务模式后,libusb-win32 将允许访问系统上的每个 USB 设备,而无需驱动程序设置/安装包。
这是否意味着我需要为每个USB 到 OBD 连接器创建自己的驱动程序包并将其与库一起部署?真的需要司机吗?我只想从 USB 端口读取数据并将数据传输到它。这样另一端的接口就可以接收到我的消息并回复我——就像 COM 端口一样。
c# - LibUsbDotNet 调用 UsbDevice.AllDevices 时未找到设备
我正在执行 LibUsbDotNet 的示例代码,它将返回所有连接的 USB 设备的信息。您可以在下面找到此代码。
我的问题是代码中执行的第二行:
根本不返回任何设备,而我确实有我想要连接的设备,我的键盘和鼠标。
有没有人遇到过这个问题?和/或有人知道如何解决吗?
提前致谢!米兰范迪克
c# - 如何从通过 USB 连接的扫描仪获取信号
我有一台通过 SX Virtual Link 连接到网络的柯达 i2600 扫描仪,该网络中的每台 pc 上都模拟到扫描仪的 USB 连接。我可以像这样轻松找到模拟的usbs pid和vid:
或这个:
我尝试使用 LibUsbDotNet 检测信号,但在他们的示例中它不起作用。我试过这个例子:
在此示例中,当我尝试打开 USB 设备时,结果为null
. 因此,我尝试使用此示例检测来自任何 USB 设备的任何信号:
在这个例子中,我只能检测connect
和disconnect
发出信号。所以我尝试使用 LibUsbDotNet 连接到 USB 键盘/鼠标端口,但这也不起作用。
看来我
severely
不明白这里需要做什么。
接下来,我什至尝试通过 SO: USB Device Connected的示例检查是否连接了某个 USB 设备 ,即使这样也没有用。
总结一下,我需要这样做:
- 连接到扫描仪所连接的 USB 端口(并监听它通过该端口发送的信号)。
- 检测来自扫描按钮的信号:
- 当检测到来自 2. 的信号时,我会向扫描仪发送一个信号,以使用我自己的配置使用 TWAIN 或 ISIS lib 进行扫描。
c# - Linux/Mono 中通过 USB 控制传输的错误数据
我们这里有一个 USB 设备,上面有一个 EZ-USB FX 芯片,我们通过libusb-1.0
使用LibUsbDotNet
. 使用 Windows 一切正常,但Mono 3.12.1
在Ubuntu 14.04
它下使用不起作用。我做了一些调查和测试,发现它无法初始化设备,我们使用以下逻辑(这是来自我的测试程序,但“真正的逻辑”是等价的):
然后我使用 USB 分析器来分析通过 USB 端口发送的命令。
使用 Windows 我得到以下信息:
这是正确的,正如您所看到的设备重置可以使用,但是当使用 Linux 时,我得到以下信息:
现在而不是01
命令00
发送68
,A8
因此设备什么也不做。
有谁知道这可能是什么原因?为什么在Linux下发送错误的数据包?
c# - Reading a range of output from USB device with LibUSB
I am working on a program that communicates with a device connected through USB. When my program reads in data sent from the device (button presses, for example), it is sent as a byte array. I have key value pairs stored as a dictionary for the button press byte array and a string for the name of the button, which I display whenever it is pressed. This device also has sliders which sends byte arrays, but it has a full range, each slider is a different digit in the array
The range goes from 00 to FF in hex which I convert to decimal.
I need to know what slider is being used, so every value between 0-255 comes through as "slider1" or whatever the name might be. Is there any way to store a whole range of values for one object, as opposed to making 256 entries per slider?
c# - 测试 LibUsbDotNet 时出现异常
我不习惯要求社区解决我的问题,但我是 C#/.NET 的新手,目前陷入困境。
我想制作一个 XAML 应用LibUsbDotNet
程序,用于通过 USB 使用 Android 附件协议与 Android 手机上的程序进行通信。
经过大量研究,我认为我已经成功安装LibUsbDotNet
(最后,它只是安装 .exe 并添加引用libusbdotnet.dll
不是吗?),现在我正在努力让它工作。
因此,我实现了一个简短的程序,如下所示:
但是当我执行它时,它不起作用。然后当我使用调试器时,会发生异常:System.TypeLoadException
.
更多细节 :
无法从程序集“mscorlib,版本=4.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e”加载类型“Microsoft.Win32.RegistryValueKind”。
我在 Windows 10 Professional 64 位计算机上使用 Visual Studio Enterprise 2015。
有人可以通过说出我做错了什么并指出我正确的方向来帮助我吗?我有点失落。
非常感谢你的帮助。
PS请不要介意我的英语不好,我不是以英语为母语的人。
c - c/libusb-0.1:为什么 usb_release_interface() 失败?
我正在开发一个使用 libusb 0.1 的旧程序。在某些情况下,我们希望重置与 USB 设备的连接。所以我们做这样的事情:
后来我们打开它等等。
在日志中,我看到 usb_release_interface 总是返回 -9。我找不到此功能的任何文档。有人知道这个值是什么意思吗?这个功能应该做什么?
谢谢。
serial-port - 虚拟 Com 端口下的底层硬件
我有一个设备通过 USB 电缆连接到我的 PC 的 USB 端口,并且在设备管理器中显示 - >“XYZ corp Virtual COM 端口(COM A)”
这与串行 Com 端口相同吗?设备端和主机端的底层硬件是什么 - 分别是 Uart 或 USB 或两者都在两端?
c# - LibUsbDotNet Win32Error:错误代码 87
我的 USB 设备有问题。我正在用 C# 开发一个与该设备通信的应用程序。为了进行这种交流,我使用了 LibUsbDotNet 库。问题如下,我的通信在我公司的许多计算机上都能正常工作。但是还有其他一些(直到现在有两台计算机)它就是行不通的。在这些中,当我尝试写入设备时,它给了我一个 Win32Error:错误代码 87(无效参数)。奇怪的是,我使用的驱动程序与我在其他计算机中使用的驱动程序相同。他们甚至使用相同的操作系统(Windows 8)。我使用随 UsbK 开发工具包提供的“驱动程序安装创建者向导”创建的这个驱动程序。我使用 UsbK 创建驱动程序,因为他们使用更新版本的 libusb 驱动程序。我有其他设备也做过同样的事情,它们都工作正常,只是这个让我很头疼。研究这个问题,我找到了 Usblyzer 软件。运行它并分析我的设备插入PC时的信息,我看到有问题的计算机中打开的管道数为0。在一切正常的情况下,是 3。这与问题有关吗?知道如何解决吗?
下面是我用来重现问题的小代码。原始应用程序非常大。
c# - 如何获取 Arduino 的串口名称
我试图找出哪个串行端口属于Arduino
.
由于该SerialPort
课程没有透露有关
底层硬件的任何信息,因此我尝试改用LibUsbDotNet。
使用以下代码获取所有设备的列表:
然后我可以遍历所有这些或搜索Arduino
具体:
这实际上有效,我得到了一个实例UsbRegistry
,
但我无法打开设备或确定它是通过哪个串行端口暴露的。
由于这不起作用arduinoUsbDevice
仍然存在null
。
然后,我尝试使用在
系统中添加或删除设备DeviceNotifier
时引发事件的类:
现在,每当我连接Arduino
到计算机时,都会引发两次事件。
好像正在连接两个单独的设备,
但其中只有一个被返回UsbDevice.AllDevices
:
第一次为我们之前可以找到的设备引发事件。
第二次用e.Device
set tonull
但
用e.Port
set to 提出COM5
,这是我所追求的信息。
所以问题是我只能在软件启动后连接时才能获得此信息Arduino
,
即使连接这两个事件也是
一种猜谜游戏。
有什么方法可以在不依赖班级
引发的事件的情况下获取信息DeviceNotifier
?
我知道我可以使用System.Management
和WMI
查询,但这些在 Linux 和 MacOS 上不可用,这就是我
LibUsbDotNet
改用的原因。
我使用的本机库是libusb-1.0