Raspberry Pi 使用python实现USB串口发送16进制数据

在很多时候,我们需要通过USB的串口与外部设备进行通信,凌顺实验室(lingshunlab.com)在此记录一个简单的Python例子,方便查阅使用。

代码实现

# by lingshunlab.com

import serial as ser 
import time

se = ser.Serial("/dev/ttyUSB0", 115200,  timeout=1)

datas = 'AB CD 14 F0 00 50 F0 00 50 F0 00'

toBytes=bytes.fromhex(datas)  # 把字符形式的数据转换成一组16进制数据

result=se.write(toBytes) # 从串口写入数据

常见问题

1,遇到 No module named 'serial的情况,则需要安装pyserial,在命令行输入以下命令进行安装即可:

pip install pyserial

or

pip3 install pyserial                     # python3 使用

2,有时候可能会遇到USB串口的权限问题,提示‘[Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: \'/dev/ttyUSB0\'’,则需要更改设备的权限,在命令行输入命令即可:

sudo chmod 777 /dev/ttyUSB0

此时已经修改权限为可读可写可执行,但是重启系统之后需要重新设置,比较麻烦,也可通过以下命令设置永久有效:

sudo usermod -aG dialout lingshunlab

其中 lingshunlab 是用户名,需要你修改成你系统的用户名。此命令意思是把用户 lingshunlab 加入到 dialout 用户组。