问题标签 [pyusb]
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.
python - 为什么我不能重复调用 PyUSB 函数 dev.read() 而不会出现超时错误?
我在 Macbook Air 和连续流式传输十六进制数据的微控制器传感器之间有一个 USB 连接。我正在尝试在 Python 中使用 PyUSB 来获取数据。我使用 PyUSB 像这样连接到微控制器:
然后我尝试使用 dev.read() 方法将设备中的数据读取到数组中,该方法第一次起作用:
这产生了一个长度为 100 的数组,但是在我多次调用 dev.read(0x1,100,100) 之后(并获得了更多数组),我开始收到此错误:
为什么会这样?我怀疑我不了解缓冲区在数据传输过程中如何在各个地方存储数据,但无法找到对正在发生的事情的明确解释。
python - PyUSB 从未知长度的批量传输中读取多个帧
所以我对 USB 和 PyUSB 比较陌生。我正在尝试使用 PyUSB 与蓝牙设备通信。要初始化它,我需要发送一个命令并从设备读回一些数据。我使用dev.write(0x02, msg)
and来做到这一点ret = dev.read(0x81, 0x07)
。我知道成功响应的命令结构和格式。响应应该有 7 个字节,但我只得到 2 个字节。
此设备有一个仅在 Windows 上运行的参考程序。我已经运行它并使用 USBPcap/wireshark 来监控流量。从这里我可以看到,在我的命令发送后,设备以 2 字节的响应响应了几次,然后最终以完整的 7 字节响应。我正在 Raspberry Pi 上进行 python 工作,所以我无法轻松监控流量。
我认为问题是由于读取需要 7 个字节,然后在达到默认超时后返回结果,而没有收到后续响应。我可以将字节设置为 2 并进行多次读取,但我无法知道消息是否有更多我丢失的字节。因此,我正在寻找一种在请求读取之前检查缓冲区中消息长度的方法,以便我可以指定大小。
此外,是否有缓冲区或任何需要清除的东西,以确保我正在阅读下一条消息。似乎无论我运行多少次读取命令,我都会得到相同的响应。
python-2.7 - 将 pyusb 设备集成到 poll() 循环中
我正在使用pyusb-1.0.0b2
. 我正在将一些多线程代码转换为使用select.poll()
循环,如下所示:
目前有一些代码在其自己的线程中运行,主要只是调用read()
pyusbusb.core.Device
对象。我想将此设备集成到poll
循环中,但不幸的是,它没有公开fileno()
(实际上,查看/proc/[pid]/fd/
没有为该设备打开的文件描述符。)
我看到 libusb 应该支持这个:libusb and poll / select
如何使用 pyusb 实现这一点?
python - 窗口上的串行 USB 端口号(作为参数)
我想在 windows 8.1 下的 eclipse 中的 python USB 库下使用 USB 记忆棒(ANT+ suntoo)进行串行通信。我必须将我的 USB 记忆棒的串行地址(Port_#0001.Hub_#0003)作为参数传递给我的 python 程序。
在 linux 中它会是:#SERIAL = '/dev/ttyUSB0',所以在窗口中没有这样的东西
但是在 Windows 中,它会是 COMx 的一些变体,但我的操作系统不会将 USB 显示为 COM 端口。相反,它只显示带有端口和集线器编号的通用 USB 集线器。
我试图只通过 COM3,但我得到的错误是:无法打开端口 'COM3': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)
python - Raspberry Pyusb 资源繁忙
我正在尝试通过 USB 将我的 Raspberry PI 连接到 Pic4550。(图片功能可以用windows c#程序!)。所以我安装了 rpi 2,pyusb,并尝试在 [ https://github.com/walac/pyusb/blob/master/docs/tutorial.rst][1]的帮助下进行通信
我连接到 USB 设备, lsusb 显示:
总线 001 设备 006:ID 04d8:0080 Microchip Technology, Inc.
python prog 找到了设备!获取正确的配置但无法写入消息:
usb.core.USBError: [Errno 16] 资源繁忙
我尝试以 sudo 运行,我添加了规则:
SUBSYSTEM=="usb", ATTR{idVendor}=="04d8", ATTR{idProduct}=="0080", MODE="666"
无论如何,我得到相同的资源忙
任何胶水帮助链接?
python - 如何通过 Python HIDAPI 去皮便宜的称重传感器秤?
好消息是这款便宜的厦门 ELANE.NET 称重传感器通过 USB 通电进入报告 3 模式;不断地以克为单位吐出它当前的重量。
这是它的数据表:
http://www.elane.net/USBscales/List_USB_Digital_Load_Cell_Commands_and_Data_Format_User.pdf
我可以通过标准pyusb
调用来阅读。这个样本可以读取规模......
http://www.orangecoat.com/how-to/read-and-decode-data-from-your-mouse-using-this-pyusb-hack
...如果您将设备查找替换为usb.core.find(idVendor=0x7b7c, idProduct=0x301)
(我也滥用sudo
运行我的程序,因为我拒绝使用设备权限,并且sudo
在 Raspberry Pi 上很容易。)
使用标准pyusb
调用,我可以像这样读取我的体重秤喷出:
这将返回一个 6 字节数组:
现在,当我尝试向秤发送命令时,乐趣就开始了。将当前重量(零重量,又名“皮重”)归零的命令可能是7 4 2 0 0 0
.
如果我使用https://github.com/walac/pyusb/blob/master/docs/tutorial.rst之类的示例代码来查找 ENDPOINT_OUT 端点,并使用以下任一行写入它,我不能去皮:
(症状是,我可以在我的称重传感器上放一个负载,用上面的线称重,然后去皮,然后当我再次.read()
时不会得到零。).read()
好吧,我们还没死。我们还没有尝试过任何 HIDAPI。所以我是apt-get
some libusbhid-common
, some cython-dev
, some libusb-dev
, some libusb-1.0.0-dev
, and some libudev-dev
,我升级了 HIDAPI C 示例代码以尝试去皮重:
那是稗子。
为了在 Python 中复制我的一次成功(尽管用 C++ 重写我的应用程序的一小层是多么诱人!),我拿出了一些 Cython-hidapi(大概来自git://github.com/signal11/hidapi.git
),并升级了他们的try.py
示例代码:
你猜怎么着?最后一行不去皮。但如果我运行它 3 次,它确实会去皮!
所以,在我编写一个循环调用皮重线直到读取返回零级之前,有人可以检查我的数学并建议一个捷径吗?原始pyusb
解决方案也可以很好地工作。
python - PyUSB USBError: [Errno None] 未知错误
我正在尝试运行 set_configuration() 方法来连接我的 USB 设备,但收到以下错误:
这是我正在使用的代码:
这是设备的 USB 信息:
我是 pyusb 的新手,但我觉得我基本上是按照他们在github page 上的指示进行的。我正在使用 Rasbian OS 的树莓派上运行此代码。我也在使用 Python 2.7.3 并以 root 身份运行。该设备只有一个配置和一个接口,我做错了什么?
python - usb.core.USBError: [Errno 19] 没有这样的设备(它可能已断开连接)
我在 Python 中从 USB 设备检索值的代码如下:
当我运行这是错误消息:
为什么会发生这种情况,我该如何解决?谢谢!
python - 当一个不移动时,多个 HID 设备滞后 (PyUSB)
我正在使用具有相同产品和供应商 ID 的两个 HID 设备(Logitech Attack 3 控制器),因此使用它们的总线和设备编号来区分它们。
当我同时移动两个设备时,它们的运行没有任何延迟,但是当我只移动其中一个时,它非常滞后。我认为这可能是由于处理 USBError 异常的一些滞后,每次其中一个设备不移动时都会触发该异常。如果取出第二个设备,该代码可以正常工作。
我相信这是有问题的代码:
提前致谢。
python - 逆向工程 USB 协议 - 偏移量问题
我正在尝试对在 Windows 中工作但在 linux 上没有驱动程序的设备协议进行逆向工程。我捕获(windows vm + wireshark),然后回放所有的 USB 通信。我相信我在 windows 和 linux 版本上有完全相同的 wireshark 跟踪。
在一个循环中,有一些似乎永远不会改变的设置数据,然后是一个 4096 字节的 bulk_in 传输。
我的问题是,在实际应该从字节 0 开始的 4096 字节接收数据前面经常有 +-1000 字节的零。而在 Windows 版本中,它似乎总是正确的。
是什么原因造成的?时间问题?pyusb/usblib 是否可以处理任何事情?有一些例外吗?
当我查看相关的端点信息时,wMaxPacketSize 是 512,但我正在写 4096 个字节,这可能是相关的吗?我没有收到任何溢出异常。
谢谢!