365玩球安全吗

python读取USB串口数据(精简Demo)(以USB-FT232举例)

python读取USB串口数据(精简Demo)(以USB-FT232举例)

python读取USB串口数据(精简Demo)(以USB-FT232举例)

步骤一:pip pyserial步骤二:连接硬件设备,打开USB设备(我用的是FT232的USB设备)安装usb驱动(以USB-FT232为例)

步骤三:写Python代码如果你decode()运行出来的结果是下面这几个图的,请认真看注释的代码,调高比特率,然后再decode()试试看。

除注释提到的其他错误的解决方案遇到报错:“usb.core.NoBackendError No backend available”

步骤四:代码解析

网上查了一堆垃圾人写的代码,真的费时又费力,垃圾文章就不要拿出来显摆

最终总结了最精简的Demo

步骤一:pip pyserial

pip install pyserial # 这个是主要的pip包, 用的时候import serial就好了

pip install usb #这个包,我感觉只能看看usb端口一些基本的驱动信息,没什么卵用,可下可不下

步骤二:连接硬件设备,打开USB设备(我用的是FT232的USB设备)

如果windows电脑能直接打开USB设备的,那么请跳过安装usb驱动部分。

安装usb驱动(以USB-FT232为例)

ft232驱动安装官网

解压,默认next安装 计算机—右键----属性----设备管理器-----端口 右键 USB Serial Port(COM3)端口------属性-----详细信息------下拉框选择(匹配设备ID)

可以看到你的vid 和 pid值,如果是查看USB硬件信息的话,敲代码时会用到。

步骤三:写Python代码

import serial #pip install pyserial

import chardet #如果你decode()不知道什么编码格式,可以用这个包

# chardet.detect(bytes_data) # 查看串口返回来的数据到底是什么编码!

'''

COM3为端口

962100为比特率(Baudrate),填的数字要求大于等于硬件设备的比特率,不然decode()会报错,

或者不是自己想要的数据

timeout 设置超时

'''

ser = serial.Serial('COM3', 962100,timeout=0.5)

a=ser.read_until(expected=b'\n') #读取一帧数据 ,读到\n为止。

#你也可以read_line啥的,因为发送过来的一帧数据可能太长,会读取不完整,所以一条数据读到\n这里正好。

a.decode() #很多人会在这里报错,或者得到的解析数据不是自己想要的结果,

#是因为比特率设置的频率小于硬件设备的比特率,你可以随便设置一个很大的数字即可成功

print(a)

ser.close() #关闭端口

运行成功的结果大致如下:(具体意义,需要硬件那边的解析规则,编写相应的解析代码)

如果你decode()运行出来的结果是下面这几个图的,请认真看注释的代码,调高比特率,然后再decode()试试看。

除注释提到的其他错误的解决方案

遇到报错:“usb.core.NoBackendError No backend available”

链接

1,首先,打开链接,网页会自动下载libusb-1.0.20的压缩包

2,打开压缩包,选择MS64\dll\libusb-1.0.dll,复制到C:\Windows\System32

3,然后选择同目录下的libusb-1.0.lib到Python环境,我用的环境是conda的Python,

所以就复制到D:\Anaconda3\Lib下

4,然后执行程序即可打印usb信息。

步骤四:代码解析

根据相应的硬件解析规则,编写解析代码,这里不多做说明。因为各种设备的解析规则不一样,有些涉及到位运算。

← pr界面恢复默认 [交流]求副本积分排行! →

相关推荐