问题标签 [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.

0 投票
1 回答
1648 浏览

c# - 定制TG2480H热敏打印机不能打印西里尔字符.NET C#

我在自定义 TG2480H 热敏打印机中打印西里尔字符时遇到问题。在其文档中写到 0x1B、0x74、17 命令序列会将字符表设置为西里尔字母,然后我将字符串编码为字节数组并发送到打印机,但打印机不会打印 cryllic 我的代码是这样的

如您所见,编码是windows-1251,我将打印机的字符表设置为西里尔文,但正在打印未知字符。请帮助,在此先感谢!

0 投票
1 回答
746 浏览

libusb - 我可以使用带有 libusbdotnet 的 USB 笔式驱动器吗

我刚刚开始使用 libusbdotnet。我已经从http://libusbdotnet.sourceforge.net/V2/Index.html下载了示例代码。

我正在使用JetFlash 4GB 闪存驱动器(为此驱动器添加了 libusb-win32 过滤器驱动程序)

ShowInfo 代码完美运行,我可以通过两个端点查看我的设备信息。以下是来自 pastebin 的设备信息

http://pastebin.com/2Jdph6bY

但是,ReadOnly 示例代码不起作用。

http://pastebin.com/hNZaEt8N

我的代码与 libsubdotnet 网站上的代码几乎相同。我只更改了 UsbEndpointReader 使用的端点。我已将其从 Ep01 更改为 Ep02,因为我读到第一个端点是用于配置、访问控制和类似内容的控制端点。

我总是收到“没有更多字节!”的消息。

我认为这是因为没有数据,所以我使用了 ReadWrite 示例代码。

http://pastebin.com/NiN5w9Jt

但在这里我也得到“没有更多的字节!” 信息。

有趣的是,这条线

执行没有错误。

笔式驱动器可以用于读写操作吗?还是代码有问题?

0 投票
1 回答
2192 浏览

c# - 使用 libusb 捕获 USB 鼠标原始数据

我想使用C#的libusb库从 USB 鼠标捕获原始数据。

我可以使用UsbEndpointReader类读取数据,但是有一个问题。

当我尝试读取数据时,Windows 似乎也在尝试读取,我无法读取所有数据,操作系统也不能,因为鼠标移动有一些步骤。我想读取所有数据并让操作系统也读取这些数据(我的意思是移动光标没有问题)。

我遇到的另一个问题是我不知道如何获得 HID 描述符。我知道通过调用GetDescriptor方法是可能的,但我该怎么做呢?

0 投票
2 回答
4518 浏览

c# - LibUSBDotNet:使用 USB 设备一段时间后出现奇怪的错误

我在与简单 USB 设备通信的 WPF 应用程序中使用 LibUSBDotNet 库。我只向设备发送 3 个字节作为命令,没有预期的响应,我的代码就像一个魅力:

然后是写入设备的过程:

我对使用 USB 比较陌生,但到目前为止我已经完成了所有工作。但是,一段时间后,有时,在尝试再次写入设备时,我会收到以下两个错误之一:

通常我需要重新启动设备/应用程序几次,然后它才能再次开始工作,然后它又像魅力一样工作了几个小时,然后再次发生......到目前为止,我还无法在测试环境中复制崩溃.

我做了很多研究,试图找到与我类似的问题/解决方案,但没有成功。我留下的唯一建议是,在某些时候设备没有足够的电源,它会进入这种错误模式,但即使这样似乎也不太可能,因为它有一个单独的 12V 电源,它所做的只是打开和关闭几个继电器...

我也尝试过用很多连续的命令一个接一个地淹没设备,包括垃圾命令,但它仍然可以工作并且行为正常,只是稍后会崩溃。

欢迎任何建议或想法,谢谢!

编辑:经过多次尝试,我仍然无法确定问题的根本原因,但我设法达到了我的代码正在工作的地步,并且能够使用尝试重置设备的重新连接函数从 OverlappedResult 错误中恢复一旦开始失败。我在下面发布了一些代码,希望有人能够缩小问题范围并确定错误原因。

初始化期间的一些代码:

接下来我尝试向设备发送一些信息。这是错误最终会弹出的地方,我在一个简单的 try/catch 块中将其作为异常捕获:

上面的“更新”是一个字节数组,我用适当的命令发送到我的设备,而 updateRelayController 实际上是上面的代码片段向 USB 设备写入命令的函数。最后,这是我的 reconnect() 函数,它可以在 99% 的时间内重新建立与设备的连接,而无需手动重启设备和插拔 USB 电缆等:

到目前为止就差不多了。SetConfiguration/ClaimInterface/Dispose 的组合减少了我看到 OverlappedResult 错误的时间,无论何时发生这种情况,从我的日志来看,我都能立即恢复并将命令重新发送到设备。正如我上面所说,这是解决问题的方法,因为我仍然不时遇到错误,我仍然不知道为什么,但至少我现在能够继续使用该设备。如果有人有更多见解,我很想了解更多关于这个问题的信息。谢谢,我希望这会有所帮助!

0 投票
2 回答
1845 浏览

c# - LibUsbDotNet:退出 WPF 应用程序时出错 - 安全句柄已关闭

在 WPF 应用程序中使用 USB 设备,我可以成功地连接设备并向设备发送命令。该设备只接收命令,没有回复,所以我只需要一个 EndpointWriter 来与之通信。

然后是写入设备的过程:

一切正常,包括关闭应用程序,除非在工作过程中 USB 设备断开然后重新连接。应用程序成功处理了这种情况并重新连接到设备,继续成功地向它发送命令:

……等等。

在发生此类断开/重新连接后关闭应用程序时会出现问题。尽管该程序成功运行并与设备通信了很长时间,但退出时出现以下异常:

我在 USB 设备、endpointwriter 上尝试了许多不同的 Dispose 和 Exit 变体,但到目前为止没有成功。我假设在断开连接之前某些东西保持打开状态,所以我收到此错误,但我不确定它是什么以及如何摆脱它。

由于这只发生在关闭应用程序时,我不介意以某种方式忽略异常并让应用程序死掉,但我不确定如何捕获该异常,因为 Window_Closing 事件成功返回然后异常在那之后发生,所以我无法抓住它......

任何提示表示赞赏,谢谢!

0 投票
4 回答
2093 浏览

c# - LibUsbDotNet USBEndpointReader DataReceived 事件在我期望的时候没有触发

我有一个 USB 设备,我需要通过 LibUsbDotNet 从中读取数据。

如果我在成功打开设备后使用以下代码...

.

并定义方法:

该事件永远不会触发。我知道我的代码正在接收数据包,因为我连接了一个 USB 分析器并且可以看到它们进入。

如果我更改代码以消除对事件回调的依赖,而是在后台线程上使用下面的循环来读取阅读器对象

然后一切都很好。

我已经尝试过使用我初始化的顺序、值等,但仍然没有任何乐趣。如果我使用 DataReceived 事件,谁能建议为什么事件没有触发?

我正在使用 LibUsbDotNet 2.2.8。

0 投票
2 回答
5893 浏览

c# - LibUsbDotNet 打开设备 -> 找不到设备

我有用于 AVR 微控制器的 usbasp 编程器。这个程序员使用 libusb 库。我设法将它连接到电脑,系统检测到新设备,我设法为这个设备安装驱动程序。它运行良好,因为我可以用它对 AVR 芯片进行编程。所以硬件部分是 100% OK。

现在软件部分:使用 LibUsbDotNet 对我的 libusb-win32 设备进行简单迭代,我找到了 2 个设备。它们都命名相同(并且具有相同的 VID 和 PID),所以我认为这是复合设备。第二个有一些数据。这在下面的屏幕截图中得到了很好的展示。

USB1

USB2

USB3

和代码(它只是从示例中复制粘贴)

这是这个程序的输出

我想要的是这个简单的代码来检测存在的这个设备(因为对所有设备的简单迭代找到了它,而其他工具“USB Cfg 询问器”也找到了它)。以前有人问过这个问题,但没有建设性的答案。

我也可以使用 libusb-win32 c++ 库并为其创建一些 C# 包装器,但如果不需要它并且我可以使用 LibUsbDotNet 库,我想使用它而不是自己创建包装器。

0 投票
1 回答
307 浏览

c# - LibUsbDotNet SymbolicName 错误

我无法从 LibUsb 中读出 SymbolicName。这是一些示例代码:

字符串名称不包含正确的符号名称。我不知道为什么。

问题似乎出在 LibUsbRegistry.cs 中。功能:

使用参数调用 LibUsbDriverIO.UsbIOSync:LibUsbIoCtl.GET_CUSTOM_REG_PROPERTY,在 LibUsbDriverIO.cs 中,函数 UsbIOSync 调用 Kernel32.DeviceIoControlAsObject。这个函数返回假。

一些代码:

LibUsb注册表:

LibUsbDriverIO:

问题只是出现在 LibUsbIoCtl.GET_CUSTOM_REG_PROPERTY 中。但这一切都是来自 LibUsb 的预编译代码。所以为什么不能读出符号名称。

0 投票
1 回答
5092 浏览

c# - LibUsbDotNet,没有 libusb-1.0.dll

我正在尝试使用 libusb 将一些 C 源代码(Linux)移植到 C#(Windows)。我在 Windows 7 上成功安装了 LibUsbDotNet。然后我继续添加using MonoLibUsb,因为它看起来是最简单的移植路径。但是,在运行时会出现一个异常,说libusb-1.0.dll缺少。事实上,我似乎无法在C:\Windows\System32. 所以,两个问题

  1. 我在哪里可以找到它?在线搜索并没有发现任何方便的安装程序包。
  2. 为什么它不作为 LibUsbDotNet 的一部分安装?AFAICS 缺少它使 LibUsbDotNet 的一半无法使用。
0 投票
1 回答
1263 浏览

c# - Can't find device on libusbdotnet

I am a beginer on USB. I found libusbdotnet on http://sourceforge.net/projects/libusbdotnet/ i am using the library. But i can't find my device by command

The vendor and product ID are the vender, product ID of Keil ULINK2.

MyUsbDevice always null although The USB is attached.

Thank for help!