python libusb_使用python开发usb的两种方式(windriver与pyusb)

背景

最近在给一个FPGA板子做上位机界面,上位机与下位机的通信采用USB方案,

驱动采用WinDriver。

但在实际调试过程中,发现WinDriver不同版本之间兼容性差,并且在win10

上表现不佳。实际的数据传输流程如下:

python usb dll(through ctypes) windriver usb device

由于dll文件是在win7机器上编译的,故仅能在win7上使用,在win10机器上出错。

使用python的项目都应该是简洁而优雅地,遂研究了在python操作usb device的两种方式。

驱动无关的调试软件使用bus hound

WinDriver

WinDriver经常与Jungo connectivity联系在一起,安装了WinDriver驱动的usb device在

设备管理器中也显示为Jungo devices。

完整的WinDriver开发流程应该从驱动开始,使用C/C++调用WinDriver提供的库与usb device

通信,将此程序编译为dll供其他程序调用。

将usb device连接上电脑,使用WinDriver给设备安装驱动。

在python中使用ctypes调用上文中的dll,完成调用过程。

PyUsb

pyusb是一个python库,可以方便地使用python操作usb设备。pyusb的数据传输流程如下:

python pyusb pyusb backend usb device

很明显可以看出省略了dll,大大减少了代码量。

具体使用过程:

1. 下载并安装pyusb backend

2. 连接usb device,使用pyusb backend安装驱动,我选择libusb,一般可以正常使用。不行就换其他的。

3. 编写python脚本,可以参考官方教程

缺点:

1. windriver有一个可视化的调试工具,可以单独发送接收数据以确定usb device是否正常,pyusb暂时没有找到。但

找到了一个非官方的基于tk的pywinusb hid调试工具

pyusb demo

我认为官方教程中的操作有些复杂,可以做如下简化:

1. 官方例程中使用get_active_configuration(), usb.util.find_descriptor()找设备描述符,我没有调试出

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值