我正在尝试通过USB将我的python应用程序接口与NFC设备连接.最好的选择似乎是pyusb,但我不能让它连接到libusb后端.我一直在
ValueError:没有可用的后端
我查看了堆栈跟踪,发现usb/backend/libusb10.py
(这是pyusb的一部分)正在尝试加载libusb-1.0.dll
以用作后端,但它无法找到它.这不是它不在我的道路上,它根本不在我的电脑上!
我安装了libusb-win32(http://libusb.org/wiki/libusb-win32),但生成的目录似乎只包含libusb0.dll.libusb-1.0.dll在哪里???
我很想知道在哪里获得该DLL,或者甚至不同的建议让pyusb在Windows 7上运行.
需要逆向工程蓝牙usb鼠标加密狗,并使用鼠标板测量距离,并用matplotlib绘制它们
我发现这些工具可以帮助完成这项任务:
Linux的
视窗
参考书目:
例子:
lnx#> lsusb -s 2
Bus 005 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bus 003 Device 002: ID 192f:0716 Avago Technologies, Pte.
Bus 002 Device 002: ID 1bcf:053a Sunplus Innovation Technology Inc. Targa Silvercrest OMC807-C optische Funkmaus
Run Code Online (Sandbox Code Playgroud)
lnx#> sudo lsusb -s 2:4 -v
Bus 002 Device 004: …
Run Code Online (Sandbox Code Playgroud) 我正在按照教程(http://pyusb.sourceforge.net/docs/1.0/tutorial.html)
我在windows xp sp3上,我的python版本是2.7,我下载并安装了pyusb-1.0.0-a1.zip
和libusb-win32-bin-1.2.4.0.zip
import usb
Run Code Online (Sandbox Code Playgroud)
工作良好
但
import usb.core
Run Code Online (Sandbox Code Playgroud)
根本不起作用
它说
Traceback (most recent call last):
File "D:\py\usb.py", line 1, in <module>
from usb import core
File "D:\py\usb.py", line 1, in <module>
from usb import core
ImportError: cannot import name core
Run Code Online (Sandbox Code Playgroud)
任何解决方案
谢谢!
ps"来自usb import core"这个
Traceback (most recent call last):
File "D:\py\usb.py", line 1, in <module>
from usb import core
File "D:\py\usb.py", line 1, in <module>
from usb import core
ImportError: cannot import name core
Run Code Online (Sandbox Code Playgroud)
完整源代码在这里
from …
Run Code Online (Sandbox Code Playgroud) 我目前正在研究 PyUSB。由于我是 USB 新手,我不知道\xe2\x80\x99t,我该如何执行以下操作。
\n\n我已从 Python PyUSB 成功连接到我的 USB 设备硬件。在代码中,我需要重置 USB 设备硬件。\n我通过向硬件发送命令来完成此操作。现在,在硬件重置后,我想从 Python PyUSB 释放当前的 USB 设备。\n然后我想在 USB 设备硬件从重置恢复后再次连接到它。
\n\n请告诉我,如何释放 USB 设备连接和接口等以便我可以重新连接?
\n\n预先非常感谢您。
\n这是一个更新和缩短的问题。
通过PyUSB与 USB 设备通信应该很容易。因此,我尝试在 Win10 下使用 PyUSB 从 USB 设备(示波器)读取数据。显然,自从找到设备以来,USB 驱动程序 (libusb-win32 v1.2.6.0) 已正确安装,并且我得到了一些响应print(dev)
(见下文)。由此我可以看到输出端点地址是0x3
,输入端点地址是0x81
根据示波器手册,我应该发送:SDSLSCPI#
到设备以将其设置为 SCPI 模式,并且应该得到响应“:SCPION”。然而,当:SDSLSCPI#
可再现地发送示波器的监视器时,它会冻结并且会重新启动。
如果我发送,*IDN?
我应该得到回复,P1337,1842237,V2.4.0->
。但前提是设备已处于 SCPI 模式。显然,事实并非如此,我收到超时错误(见下文)。
那么,我在这里做错了什么?我在PyUSB 教程中缺少哪些信息。我是否使用了错误的 PyUSB 命令/参数,或者是否缺少额外的驱动程序,或者是否与硬件(Win10 或设备硬件)有关?感谢您提供有关如何找出问题所在的提示。
顺便问一下, 中的第二个值是多少dev.read(0x81,7)
?要读取的字节数?嗯,通常我不知道设备将发送多少字节。我期望在超时时间内读取一个命令,直到出现换行符或其他终止符。在哪里可以找到有关 PyUSB 的“万无一失”的文档、教程和示例?
代码:
import usb.core
import usb.util
dev = usb.core.find(idVendor=0x5345, idProduct=0x1234)
if dev is None:
raise ValueError('Device is not found')
# device is found :-)
print(dev)
dev.set_configuration()
msg = ':SDSLSCPI#'
print("Write:", msg, dev.write(3,msg)) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个脚本(在Linux上),可以打开或关闭鼠标中的灯光.
这是我到目前为止的代码:
import usb.core
import usb.util
import sys
interface = 0
dev = usb.core.find(idVendor=0x1532, idProduct=0x0017)
def main():
if dev is None:
print "device not found"
else:
print "device found"
if dev.is_kernel_driver_active(interface) is True:
print "but we need to detach kernel driver"
dev.detach_kernel_driver(interface)
print "claiming device"
usb.util.claim_interface(dev, interface)
print "release claimed interface"
usb.util.release_interface(dev, interface)
print "now attaching the kernel driver again"
dev.attach_kernel_driver(interface)
print "all done"
return 0
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
这工作正常,但如果我尝试做:dev.set_configuration()
在claim_interface(dev,interface)之后
该脚本返回错误:usb.core.USBError:资源忙
在分离内核驱动程序后,为什么它仍然很忙?
我试图通过pyusb通过Mac OS发送控制传输命令:dev.ctrl_transfer(0x21,0x09,0x0200,0x0,0x1)
我收到错误:
Traceback (most recent call last):
File "./main.py", line 21, in <module>
dev.ctrl_transfer(0x21,0x09,0x0200,0x0000,0x0001)
File "/Library/Python/2.7/site-packages/usb/core.py", line 962, in ctrl_transfer
self._ctx.managed_claim_interface(self, interface_number)
File "/Library/Python/2.7/site-packages/usb/core.py", line 146, in managed_claim_interface
self.backend.claim_interface(self.handle, i)
File "/Library/Python/2.7/site-packages/usb/backend/libusb1.py", line 747, in claim_interface
_check(self.lib.libusb_claim_interface(dev_handle.handle, intf))
File "/Library/Python/2.7/site-packages/usb/backend/libusb1.py", line 552, in _check
raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 13] Access denied (insufficient permissions)
Run Code Online (Sandbox Code Playgroud)
有人可以帮我弄这个吗.我试过sudo,su.我也在pyusb github用户组中发布了这个.我得到了这个(将自己添加到debian系统中的plugdev组)作为一种可能的解决方案,但我不知道如何继续使用Mac OS https://github.com/braiden/python-ant-downloader/issues/30# issuecomment-55293142
与以下问题相关联:
PyUSB dev.set_configuration()(解决方案适用于ubuntu)
所以我安装了 Pyusb 1.0.0-alpha-1
在 Windows 下,我无法获得 USB 设备的任何句柄。
>>> import usb.core
>>> print usb.core.find()
None
Run Code Online (Sandbox Code Playgroud)
我确实插入了 1 个 USB 设备(idVendor=0x04d8,idProduct=0x0042),我尝试过,usb.core.find(idVendor=0x04d8, idProduct=0x0042)
但也失败了。
在 Ubuntu 下,使用相同版本的 pyusb 和 python (2.6),我能够使用该代码成功找到我的设备,并与之通信。
那么如何让 pyusb 在 Windows 7 上找到 USB 设备呢?
我刚开始使用pyusb,基本上我在这里玩示例代码。
我使用的是 Windows7 64 位,并从https://walac.github.io/pyusb/下载了 zip 版本。后端是 libusb-1.0.19,它是从http://libusb.info/下载的 Windows 二进制文件。
我所有的代码是:
dev = usb.core.find(idVendor=3544, idProduct=9736)
if dev is None:
sys.stdout.write("No device found")
return;
print "deviceClass = " + str(dev.bDeviceClass);
for cfg in dev:
sys.stdout.write("configuration: " + str(cfg.bConfigurationValue) + '\n')
for intf in cfg:
sys.stdout.write('\tInterface: ' + \
str(intf.bInterfaceNumber) + \
',' + \
str(intf.bAlternateSetting) + \
'\n')
for ep in intf:
sys.stdout.write('\t\tEndpoint: ' + \
str(ep.bEndpointAddress) + \
',' + \
str(ep.bmAttributes) + \ …
Run Code Online (Sandbox Code Playgroud)