手把手一起完成Python上位机与下位机USB通信

这篇具有很好参考价值的文章主要介绍了手把手一起完成Python上位机与下位机USB通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近在使用Python设计上位机,下位机是ZYNQ7000,两者通过USB进行数据传输。该文章是USB通信过程的踩坑记录

一、安装所需库

首先,安装pyusb和libusb两个库,命令如下:

pip install pyusb
pip install libusb

如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

二、Python测试USB通信

输入程序:

import usb.core

all_devs = usb.core.find(find_all = True)
for dev in all_devs:
	print(dev)

报错 usb.core.NoBackendError: No backend available,如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

三、usb.core.NoBackendError: No backend available错误解决

安装libusb1包,命令如下:

pip install libusb1

如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

找到 libusb-1.0.dll 文件,路径如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

将 libusb-1.0.dll 复制粘贴到如图所示路径:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python
再次运行程序,运行成功,如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

四、Python测试USB读写数据

USB设备的idVendor与idProduct,如果已经安装过驱动,可以在设备管理器->USB设备->属性中查看,如果USB设备没有驱动,下载Zadig工具(下面会提到,请继续往下看)

import usb.core
 
dev =  usb.core.find(idVendor= 0x04B4, idProduct= 0x00F0)
print(dev) #USB设备的枚举信息
 
#设备配置,使能端点
dev.set_configuration()
 
#定义端点写函数
def write_bulk_out_ep(data):
        while(True):  
            try:
                data = dev.write(0x01, data, 1000)  #write(endpoint, data, timeout = None)
                print(data)
                break
            except Exception as e:
                print(e)
	
#定义端点读写函数		
def read_bulk_in_ep(len):
        while(True):  
            try:
                data = dev.read(0x81, len, 3000)  #read(endpoint, size_or_buffer, timeout = None)
                print(data)
                break
            except Exception as e:
                print(e)
 
data = bytes.fromhex('7e 7e 00 01 01') 
write_bulk_out_ep(data)
read_bulk_in_ep(10)

运行报错 NotImplementedError: Operation not supported or unimplemented on this platform 忘记截图了

五、解决 NotImplementedError: Operation not supported or unimplemented on this platform错误

下载Zadig工具,给USB设备安装或更新驱动,下载链接 https://zadig.akeo.ie/

点击Option,勾选List All Devices,选择需要操作的设备,驱动选择WinUSB,点击Install Driver即可,如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python

注意:由于下位机的USB驱动我已经安装,这里是更改驱动。更改设备驱动将会导致该设备原来的功能不能使用,所以请谨慎操作,最好选择没用的设备或自己开发的USB设备进行测试

最终再次运行程序,USB读写数据成功,如图所示:

python usb通信,笔记,一起学Python,嵌入式硬件,python上位机,zynq7000下位机,usb通信,pyusb,经验分享,python
请注意,程序中

usb.core.find(idVendor= 0x04B4, idProduct= 0x00F0)的idVendor和idProduct
dev.write(0x01, data, 1000) 的endpoint:0x01
dev.read(0x81, len, 3000)的endpoint:0x81

根据自己USB设备信息的实际情况填写

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距文章来源地址https://www.toymoban.com/news/detail-724319.html

到了这里,关于手把手一起完成Python上位机与下位机USB通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 手把手一起实现Visual Studio 2022本地工程提交(和克隆)Gitee

    登录Gitee,创建空仓库,如图: 新建仓库: 打开Visual Studio 2022创建的工程,点击创建Git存储库: 复制Gitee仓库URL: 将URL填入,点击创建并推送: 输入Gitee用户名和密码: 刷新Gitee页面,已提交代码: 如图,GlobalVariable.cs代码中日期为private string globalUpdateTime = “2023.7.29”:

    2024年02月15日
    浏览(57)
  • 手把手教你完成一个Python与OpenCV人脸识别项目(对图片、视频、摄像头人脸的检测)超详细保姆级记录!

    课程来源: 一天搞定人脸识别项目!学不会up直接下跪!(python+opencv)_哔哩哔哩_bilibili 环境配置详见: 在conda虚拟环境中安装OpenCv并在pycharm中使用_conda虚拟环境安装opencv_好喜欢吃红柚子的博客-CSDN博客 目录 一、读取图片 1.1 imshow和WaitKey方法   1.2 代码实现 1.3 效果展示 

    2024年02月03日
    浏览(37)
  • 【上位机与下位机通信】使用WIFI模块ESP8266连接单片机与上位机通信

    承接上文WIFI上位机部分:【上位机】通过WIFI上位机与网络调试助手通信绘制曲线,现阶段实现了STM32单片机与ESP8266WIFI模块作为下位机与WIFI上位机通信。 ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-无线)模块,此处使用的是正点原子团队自主开发的ATK-ESP-01模块。

    2024年02月05日
    浏览(161)
  • 【手把手一起学习】(八) Altium Designer 20修改和自定义原理图标题栏

    直接对原理图标题栏属性进行修改,操作如图所示: 修改后,并不会显示,故该方法不可用: 正确的操作如下,先选择合适的模板: 然后,进行属性的修改: 此时可以看到,已经修改成功: 默认模板并不美观,可以自定义个人风格的标题栏: 复制一份模板,重命名: 在

    2024年02月06日
    浏览(46)
  • 手把手完成前端Vue3 + Vite项目工程化搭建

    基于 Vue3 + Vite 搭建的前端工程化项目演示模板 开发环境: Node.js v16.14.2 + npm v8.3.2 开发工具: Visual Studio Code or WebStorm 源代码管理: Git npm镜像: npm config set registry https://registry.npmmirror.com 技术栈 描述 Vue 渐进式 JavaScript 框架 Vite 新一代前端开发与构建工具 Element Plus 基于 Vue

    2024年04月11日
    浏览(64)
  • 手把手的教你使用Toolkit插件在诗情画意中完成AI诗朗诵

    本文分享自华为云社区《【云驻共创】手把手的使用Toolkit插件在诗情画意中完成AI诗朗诵》,作者: 红目香薰。 云原生时代,开发者们的编程方式、编程习惯都发生了天翻地覆的变化,大家逐渐地习惯在云端构建自己的应用。作为新一代的开发者们,如何更快速了解云,学

    2024年04月14日
    浏览(45)
  • 手把手教你用Python编写邮箱脚本引擎

    版权声明:原创不易,本文禁止抄袭、转载需附上链接,侵权必究! 邮箱是传输信息方式之一,个人,企业等都在使用,朋友之间发消息,注册/登录信息验证,订阅邮箱,企业招聘,向客户发送消息等都是邮箱的使用场景;邮箱有两个较重要的协议:SMTP和POP3,均位于OSI7层

    2024年02月06日
    浏览(53)
  • 手把手教Python项目环境的导出与导入

    当我们尝试 复现别人的项目 或 在新设备上 重新部署项目 时,需要确保使用的软件包与原项目中使用的软件包版本一致。(这是因为不同版本的软件包可能会有不同的行为和功能,可能会导致项目的行为和结果不同,也可能会导致与其他软件包的冲突。) 在 大型项目的开发

    2024年02月06日
    浏览(42)
  • 手把手教你用Python实现2048小游戏

    感觉好久没有写小游戏玩了,今天恰巧有空.这次我来用Python做个2048小游戏吧.废话不多说,文中有非常详细的代码示例,需要的朋友可以参考下 目录 一、开发环境 二、环境搭建 三、原理介绍 四、效果图 Python版本:3.6.4 相关模块: pygame模块; 以及一些Python自带的模块。 安装

    2024年04月28日
    浏览(70)
  • 基于python+opencv的人脸识别打卡(手把手教你)

    2.1新建members.csv文件 文件内容依次是id,First_name,Last_name,如图: 2.2新建face文件夹 里面存放采集的人脸信息,用于训练 2.3注意事项 脸部识别特征模块 Path路径为你创建环境下的cv2包中haarcascade_frontalface_default.xml对应的地址 只加了opencv中脸部特征,没加眼部识别。(cv2包中还有眼

    2024年02月02日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包