添加UART资源

  1. sudo fire-config

image.png

  1. # 在终端中输入如下命令,可以查看到UART资源:
  2. ls /dev/ttyS*

硬件连接

uart03.png

方式一:使用pyserial库

pyserial 库封装了对串口资源的访问方法,该库兼容多种平台对串口资源使用, 有许多平台特性相关的方法

安装pyserial

  1. # 在板卡使用如下命令安装
  2. sudo pip3 install pyserial

使用pyserial

  1. """ pyserial uart 测试 """
  2. import serial
  3. # 打开uart3,设置串口波特率为115200,数据位为8,无校验位,停止位为1,不使用流控制,以非阻塞模式打开串口,等待时间为3s
  4. with serial.Serial(
  5. "/dev/ttyS3",
  6. baudrate=115200,
  7. bytesize=serial.EIGHTBITS,
  8. stopbits=serial.STOPBITS_ONE,
  9. parity=serial.PARITY_NONE,
  10. timeout=3,
  11. ) as uart3:
  12. # 使用申请的串口发送字节流数据 "Hello World!\n"
  13. uart3.write(b"Hello World!\n")
  14. # 以非阻塞的方式打开的串口,在读取串口接收的数据时,该函数返回条件二者满足其一,一、读取到128个字节,二、读取时间超过1秒
  15. buf = uart3.read(128)
  16. # 注:Python读取出来的数据类型为:bytes
  17. # 打印原始数据
  18. print("原始数据:\n", buf)
  19. # 转码为gbk字符串,可以显示中文
  20. data_strings = buf.decode("gbk")
  21. # 打印读取的数据量及数据内容
  22. print("读取到 {:d} 个字节 , 以字符串形式打印:\n {:s}".format(len(buf), data_strings))

方式二:使用python-periphery

python-periphery 库支持的UART功能是基于Linux的UART系统实现的,所以要想利用该库使用到UART的功能, 需要板卡提供支持。像鲁班猫板卡,就可以完美使用 python-periphery 库UART通讯功能。

安装 python-periphery

  1. # 在板卡使用如下命令安装
  2. sudo pip3 install python-periphery

periphery使用UART功能

  1. """ python-periphery uart 测试 """
  2. from periphery import Serial
  3. try:
  4. # 申请串口资源/dev/ttyS3,设置串口波特率为115200,数据位为8,无校验位,停止位为1,不使用流控制
  5. serial = Serial(
  6. "/dev/ttyS3",
  7. baudrate=115200,
  8. databits=8,
  9. parity="none",
  10. stopbits=1,
  11. xonxoff=False,
  12. rtscts=False,
  13. )
  14. # 使用申请的串口发送字节流数据 "python-periphery!\n"
  15. serial.write(b"python-periphery!\n")
  16. # 读取串口接收的数据,该函数返回条件二者满足其一,一、读取到128个字节,二、读取时间超过1秒
  17. buf = serial.read(128, 1)
  18. # 注:Python读取出来的数据类型为:bytes
  19. # 打印原始数据
  20. print("接收的原始数据:\n", buf)
  21. # 转码为gbk字符串,可以显示中文
  22. data_strings = buf.decode("gbk")
  23. # 打印读取的数据量及数据内容
  24. print("读取到 {:d} 个字节 , 以字符串形式打印:\n {:s}".format(len(buf), data_strings))
  25. finally:
  26. # 释放申请的串口资源
  27. serial.close()

代码说明:

  • 第6行,申请UART资源,占用uart3,配置对应的工作模式
  • 第16行,使用申请到的串口资源发送数据
  • 第19行,使用申请到的串口资源接收数据,接收方式为阻塞接收
  • 第23~29行,将读取到的数据打印出来
  • 第32行,释放UART资源,释放uart3