相关文章推荐
逼格高的板栗  ·  Visual Studio ...·  1 年前    · 
不爱学习的伏特加  ·  C/c++ ...·  2 年前    · 
任性的冰淇淋  ·  rest - ...·  2 年前    · 
任性的柚子  ·  c# 调用cmd 输出 阻塞 ...·  2 年前    · 

因为公司实习做的项目要求和仪器设备连接USB通信并且控制,因为还要显示波形什么的,所以就觉得直接用Python比较好,所以就自然而然想起来用pyusb库来访问USB接口,而我的开发设备一直是我的中配MBP,感觉很多操作比WIN本要顺手许多,于是MacOS+Python+pyusb的搭配就出现了许多问题。

第一步 :在Python3上管理和连接USB设备,我们必须要用到pyusb库,我们打开 终端 ,输入一下命令,安装pyusb库。

pip3 install pyusb --user

注意:这里建议大家直接用pip3自带的库,因为根据我后面的理解MacOS+Python3的环境下,开发USB最好还是跟进最新的库,而国内的镜像源的库版本可能多多少少有些滞后(我猜的,嘿嘿)。

第二步:安装完毕之后,我们新建一个.py文件,输入以下代码进行测试。

# -*- coding: utf-8 -*-
import usb.core
dev = usb.core.find(find_all=True)	#find all usb devices
for i in dev:
	print(i)	#print information of all usb devices

运行之后我们会惊奇地发现,系统会报这样的错误。

[Running] python3 "/Users/xxx/Desktop/AAA/SaleJuiceCode/BBB/test.py"
Traceback (most recent call last):
  File "/Users/lxz/Desktop/Arona/SaleJuiceCode/SeismoPython/test.py", line 19, in <module>
    dev =  usb.core.find(find_all=True)
  File "/usr/local/lib/python3.7/site-packages/usb/core.py", line 1297, in find
    raise NoBackendError('No backend available')
usb.core.NoBackendError: No backend available
[Done] exited with code=1 in 0.075 seconds

‘No backend available’直译过来就是“没有后端可用”,换句话说就是还缺一个底层连接支撑的文件。了解之后发现,还要安装一个libusb库(我在这里将一下我的理解,大家可以把libusb库理解为一个全平台的、连接pyusb库和硬件USB端口的库)。

第三步:在终端中,输入以下命令,安装libusb库。

pip3 install libusb  --user

安装完毕之后,我们再用刚才的代码进行测试,结果发现还是同样的报错。

在查阅有关python+libusb的资料之后我发现大多数都是Windows和Linux的。于是怀着疑惑不解的心情,我就顺着报错的代码一步一步点进去看,顺着libusb安装的位置一个一个文件夹点进去看,路径如下。

/usr/local/lib/python3.7/site-packages

在该路径下,有一个名为“libusb”的文件夹,进去之后有一个名为“_platform”的文件夹,再进去之后会有三个主流系统平台的文件夹,如下图所示。
图1
每一个平台下面都会有两个文件夹:一个名为“x64”,一个名为”x86“。而文件夹中则有一个名为”libusb-1.0.dll“的dll文件,唯独Mac的”_osx“文件夹里没有类似的文件,而是空空如也,如下图所示。

Windows平台下:
图2
OSX平台下:
图3
真所谓空空如也。
想必Python报错,之所以没有支撑文件,就是因为这个文件夹里什么都没有!我直接裂开!!!

正在我苦恼万分的时候,我看到了一篇文章:PyUSB-Dev-Env on Mac with libusb
这篇文章真的是救我于水生火热之中,我对作者表示100分的感激!(我看了这个作者写的博客,有不少也是解决如何在MacOS上开发MCU单片机)

第四步:根据这篇博客的介绍,我们应该使用Homebrew来安装libusb库(具体原因我后来查阅其他资料知晓了,后面再说)于是,我们在终端中输入以下命令。

brew install libusb-compat libusb

第五步:静静地等待安装完成之后,再使用之前写好的测试代码进行测试。功夫不负有心人,终于成功!!!

最终效果如下图所示。
图4
到这里就算是配置成功了!下面还有一些小技巧和原因讲解,不感兴趣的可以撤了。

MacOS查看USB设备

第一步:点击电脑左上角的苹果标志“”
第二步:点击“关于本机”
第三步:点击“系统报告...”
第四步:找到“USB”,就可以查看了。
图5

MacOS无法通过pip安装libusb使用的原因

随着我查阅资料的增多,我就找到了libusb·PyPI的官方网站了:libusb Project description
通过阅读网站的一些版本更新文档,我们不难发现在libusb-1.0.22b6(2019-11-23)版本的时候才支持Linux,而且从一开始的文档到现在就没有提到MacOS所以估计通过pip3安装的libusb库和Homebrew安装libusb库是同一个库,只是更新维护的进度不太一样。
图6

后续USB开发经验也会陆续分享到我的博客里。

Markdown by SaleJuice
Mac OS搭建Python+selenium自动化测试环境 1、官网下载安装python 访问Python官网 https://www.python.org/downloads,下载安装Python安装包,一路点击安装即可。 验证是否安装成功 打开终端,输入以下命令,查看python安装位置 which python3 终端输入以下命令,查看Python当前版本 python3 --version 终端输入以下命令,进入Python交互模式 python3 ——————————————————————————————- Mac OS自身其实已经带有Python,版本为2.7.
由于Vivo的骚操作,我们无法直接 使用[fastboot oem unlock] 命令来解锁。Vivo的解锁命令 为{fastboot vivo_bsp unlock_vivo],{ 但是安卓官 方的fastboo饼不会识别这个 命令,而是直接当作unknowh command: 因此需要在fastboot的代码 中添加一条else 汗条件并调用 do_oem_command函数: XDA上也有大神编译了修改版 (例如https://forum.xdo -developers.com/t/how
最近在用 QT 做一个 MAC 上的 Kindle 批注管理软件,遇到的第一个问题就是检测 MAC 上连接的 USB 设备的状态。如果是在 Cocoa 进行开发,会有对应的系统 API 可供使用,但是由于我是在 QT 平台进行的开发,所以无形中加大了一点难度。就在这时,我发现了一个库:libusb libusb 介绍libusb 设计了一系列的外部API 为应用程序所调用,通过这些API应用程序可以
最近在做了一个小试验,就是如何使用libusbmac下面获取usb设备的信息,比如手机插入macusb口,我们如何拿到设备的vid,pid等设备信息,PS 使用cocoa api也可以拿到,但是如果使用Qt开发就显得比较难堪,所以决心使用跨平台的libusb实现。     首先稍微说下步骤:      1.在libusb官网下载libusb source code,官网自己可以google
mac上使用qt平台开发,读串口的话有QSerialPortinfo、QSerialPort 但是mac上没有串口,只有usb口,与串口通信也是通过usb口。使用libusb库一、安装libusb正常源码编译安装即可。二、libusb动态库加入QT项目QT项目中新建文件夹lib。,将/usr/local/lib/libusb-1.0.0.dylib复制到lib/下。 将第一步解压出来