添加UART资源
sudo fire-config
# 在终端中输入如下命令,可以查看到UART资源:
ls /dev/ttyS*
硬件连接
方式一:使用pyserial库
pyserial 库封装了对串口资源的访问方法,该库兼容多种平台对串口资源使用, 有许多平台特性相关的方法
安装pyserial
# 在板卡使用如下命令安装
sudo pip3 install pyserial
使用pyserial
""" pyserial uart 测试 """
import serial
# 打开uart3,设置串口波特率为115200,数据位为8,无校验位,停止位为1,不使用流控制,以非阻塞模式打开串口,等待时间为3s
with serial.Serial(
"/dev/ttyS3",
baudrate=115200,
bytesize=serial.EIGHTBITS,
stopbits=serial.STOPBITS_ONE,
parity=serial.PARITY_NONE,
timeout=3,
) as uart3:
# 使用申请的串口发送字节流数据 "Hello World!\n"
uart3.write(b"Hello World!\n")
# 以非阻塞的方式打开的串口,在读取串口接收的数据时,该函数返回条件二者满足其一,一、读取到128个字节,二、读取时间超过1秒
buf = uart3.read(128)
# 注:Python读取出来的数据类型为:bytes
# 打印原始数据
print("原始数据:\n", buf)
# 转码为gbk字符串,可以显示中文
data_strings = buf.decode("gbk")
# 打印读取的数据量及数据内容
print("读取到 {:d} 个字节 , 以字符串形式打印:\n {:s}".format(len(buf), data_strings))
方式二:使用python-periphery
python-periphery 库支持的UART功能是基于Linux的UART系统实现的,所以要想利用该库使用到UART的功能, 需要板卡提供支持。像鲁班猫板卡,就可以完美使用 python-periphery 库UART通讯功能。
安装 python-periphery
# 在板卡使用如下命令安装
sudo pip3 install python-periphery
periphery使用UART功能
""" python-periphery uart 测试 """
from periphery import Serial
try:
# 申请串口资源/dev/ttyS3,设置串口波特率为115200,数据位为8,无校验位,停止位为1,不使用流控制
serial = Serial(
"/dev/ttyS3",
baudrate=115200,
databits=8,
parity="none",
stopbits=1,
xonxoff=False,
rtscts=False,
)
# 使用申请的串口发送字节流数据 "python-periphery!\n"
serial.write(b"python-periphery!\n")
# 读取串口接收的数据,该函数返回条件二者满足其一,一、读取到128个字节,二、读取时间超过1秒
buf = serial.read(128, 1)
# 注:Python读取出来的数据类型为:bytes
# 打印原始数据
print("接收的原始数据:\n", buf)
# 转码为gbk字符串,可以显示中文
data_strings = buf.decode("gbk")
# 打印读取的数据量及数据内容
print("读取到 {:d} 个字节 , 以字符串形式打印:\n {:s}".format(len(buf), data_strings))
finally:
# 释放申请的串口资源
serial.close()
代码说明:
- 第6行,申请UART资源,占用uart3,配置对应的工作模式
- 第16行,使用申请到的串口资源发送数据
- 第19行,使用申请到的串口资源接收数据,接收方式为阻塞接收
- 第23~29行,将读取到的数据打印出来
- 第32行,释放UART资源,释放uart3