问题标签 [libusb]
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.
linux - 从带有 libusb 的设备读取时出现问题
情况是这样的:我有一个带有两个端点的 USB 设备(我正在尝试与之通信的自定义设备),一个写入设备,一个从设备读取。两者都是批量转移。每个通信事务都采用以下形式:(1)向设备写入命令(2)读取响应。我正在使用 libusb(版本 0.1 而不是 1.0 beta)来实际执行通信。
在 Windows 上,一切都很好。我可以连接设备,声明接口并愉快地通信。但是,在 Ubuntu(标准 Hardy 桌面安装)中,虽然我可以连接到设备并对其进行写入,但所有读取操作都会失败,并从 libusb 报告错误“提交 URB:无效参数”(错误代码 -22)。
如果我检查 /var/log/messages 我看到在尝试读取的同时记录了一条警告消息:“sysfs: duplicate filename 'usbdev4.3_ep81' can not be created” - 这与设备相符(确实是在那辆公共汽车上,它是我试图读取的端点 81)。
所以...有人在使用 libusb 时看到过类似的问题,或者知道如何解决它?
usb - 设置 USB 配置失败
我正在尝试使用 libusb 与 USB 设备通信,但我觉得我在比赛的第一站被绊倒了。我确切地知道我需要与之交谈的端点等,但我什至无法做到这一点。本质上,我有:
现在,我可以在调试模式下查看设备信息,我知道当前配置为 0(未初始化/重启后),并且正好有 1 个有效配置,其配置编号为 1。但是当我设置配置时到 1,我得到一个返回值 -22,它(通过 stringifier 传递)转换为“windows api 错误:错误参数。
我找不到其他人有类似的问题,这似乎是一件很简单的事情——我什至无法声明接口,或设置 alt-interface 或类似的东西,因为我必须先设置配置。我错过了什么?(如果重要:这是在 WinXP 上)
usb - 使用 libhid 读写 USB 时
我想使用用户空间库在 Linux 中写入和读取 USB HID 设备的响应。谷歌搜索了一会儿,我发现 libhid 将是一个解决问题的方法。
所以,当我使用hid_interrupt_write
and hid_interrupt_read
来发送和接收数据时,出现了这个错误:
但是当我尝试使用hid_set_output_report
和hid_get_input_report
读写设备时,出现了这个错误:
和
而且,我不确定如何获取 Usage_Path。
谁能帮我解决这个问题?有什么建议么?
这是我的源代码及其执行时的结果:
结果:
python - 一些有助于理解 libusb-1.0 和 ctypes 的异步 USB 操作
好的。我想到了。transfer.flags 需要是一个字节而不是一个 int。傻我。现在我从 ioctl 收到错误代码,errno 16,我认为这意味着设备正忙。真是个工作狂。我在 libusb 邮件列表上询问过。
以下是我到目前为止所拥有的。这实际上并没有那么多代码。其中大部分是 libusb 的 ctypes 结构。向下滚动到底部以查看发生错误的实际代码。
python - USB - 同步 vs 异步 vs 半异步
更新:
我编写了一个异步 C 版本,它可以正常工作。
原来速度问题是由于 Python 的 GIL 造成的。有一种方法可以微调其行为。sys.setcheckinterval(间隔)
将间隔设置为零(默认为 100)可解决速度慢的问题。现在剩下的就是找出导致另一个问题的原因(并非所有像素都被填充)。这个没有任何意义。usbmon 显示所有通信都在进行。libusb 的调试消息没有显示任何异常。我想我需要获取 usbmon 的输出并比较同步与异步。usbmon 显示的数据乍一看似乎是正确的(第一个字节应该是 0x96 或 0x95)。
正如下面原始问题 S. Lott 中所说,它适用于 USB LCD 控制器。drv_send 有三个不同的版本,它是传出端点方法。我已经解释了下面的差异。如果我概述异步 USB 操作,也许会有所帮助。请注意,同步 USB 操作的工作方式相同,只是它是同步完成的。
我们可以将异步 I/O 视为 5 个步骤的过程:
- 分配:分配一个libusb_transfer(这是self.transfer)
- 填充:使用有关您希望执行的传输的信息填充 libusb_transfer 实例 (libusb_fill_bulk_transfer)
- 提交:要求 libusb 提交转账(libusb_submit_transfer)
- 完成处理:检查 libusb_transfer 结构中的传输结果(libusb_handle_events 和 libusb_handle_events_timeout)
- 释放:清理资源(下图未显示)
原始问题:
我有三个不同的版本。一个是完全同步的,一个是半异步的,最后一个是完全异步的。不同之处在于,同步完全填充了我正在控制的 LCD 显示器,并带有预期的像素,而且速度非常快。半异步版本只填充了一部分显示,但仍然非常快。异步版本真的很慢,只能填满一部分显示。我很困惑为什么像素没有完全填充,为什么异步版本真的很慢。有什么线索吗?
这是完全同步的版本:
这是半异步版本:
这是完全异步的版本。device_poll 本身就在一个线程中。
这是队列被清空的地方。这是 gobject 超时的回调。
这是转移的回调。它只是将锁定状态更改回 false,表示操作已完成。
eclipse - linux usb-hid:将 libhid 库添加到 eclipse(C++) 或 netbeans IDE 或本机 input.h 或 hiddev.h?
我对libhid有疑问。
我发现有 2 方式 4 访问linux 中的 usb-hid
1) linux 默认库,如input.h和hiddev.h和 ...
2)使用libhid
我发现 libhid 有些令人困惑并尝试使用 input.h 但我对那个 2 有问题。
我不知道如何从 ubuntu 获取有关我的设备的信息
我使用 open() 打开设备
然后使用 ioctl 获取信息
但它给了我错误的供应商和产品 ID
然后我尝试使用 libhid 但知道如何在 eclipse 或 netbeans 中使用 libhid (或任何其他库)
你能告诉我你是如何编译你的代码的,比如 eclipse 或 netbeans 或者只是使用终端和 gcc?或者如何使用 ioctl() 和 open() ?
我的整个示例代码:
iphone - 使用 Objective-C 进行 USB 编程
谁能告诉我如何使用 Objective-C 将 USB 设备编程为 iPhone 应用程序?
我想通过 iPhone 访问 USB 设备的内容
libusb - 安装未签名的 x64 驱动程序以使用 libusbdotnet
我目前在 Windows 7 开发人员中。使用libusbdotnet初始化设备的环境。
该设备(USB 大容量存储设备)使用适用于 Windows 的默认 USB-MASS 存储驱动程序进行连接和运行。我想用 libusbdotnet 中的 .INF 向导创建的驱动程序替换这个驱动程序。
操作系统是 64 位的,默认情况下 INF 向导会生成此驱动程序,但我无法选择它,因为我相信它是“未签名的”,当我转到“从驱动程序列表中选择”并指向新创建的设备驱动程序所在的目录。
我已经使用 DESO 启用了“测试模式”,但我仍然无法选择此文件。
任何熟悉 libusbdotnet 或指导设备使用 Window 中未签名的特定驱动程序的人(我需要 .inf 文件吗?或 .sys ???)您对我哪里出错有什么建议吗?
谢谢!
c++ - 对于 64 位 Windows,是否有 libusb-win32 的替代品?
我一直在开发一些软件,它使用libusb-win32库与我一直在开发的一些 USB 硬件进行交互。现在我试图在 Windows 64 上运行相同的软件,但驱动程序似乎不起作用(可以理解)。
有没有我忽略的 64 位 Windows 的替代品?
python - Python libusb pyusb“mach-o,但架构错误”
我在使用 pyusb 模块时遇到了一些问题。我已将问题缩小到一行,并创建了一个小示例脚本来复制错误。
同样的脚本在 Ubuntu 10.04 上成功运行。
我已经尝试为 32 位(i386)而不是 x86_64(OS 10.6 的默认值)构建 libusb 模块(直接从源代码和通过 macports),但我收到相同的错误。
预先感谢您的帮助!