现在很多传感器都使用串口进行数据传送,我们再window上通常使用sscom33这类调试工具,在linux下通常使用带界面的cutecom或者命令行界面的minicom进行调试。 而使用Python写几行程API序进行自定义调试,就非常有用。并且可以快速的对传感器进行测试。本文介绍python的串口读写模块Pyserial

安装

sudo pip install pyserial

使用

确定串口设备名

Linux下把串口设备抽象成了文件,通常放在/dev/目录下,先找出串口设备的名称。

  • 断开串口设备的连接,执行
ls /dev/ > /tmp/old.txt
  • 将串口设备连接到计算机,执行
ls /dev/ > /tmp/new.txt

最后,比较old.txt和new.txt,new.txt中多出的设备名就是我们的串口设备

diff /tmp/old.txt /tmp/new.txt

例程

以下是我读取超声波测距传感器的例程,传感器返回串口数据,每一帧数据的帧头是0xFF,其后的2byte数据是距离值。

import serial
import time

with serial.Serial('/dev/ttyUSB0',9600,stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS) as ser:
    while 1:
        head = ser.read(1)
        if head == b'\xFF':
           distance = int.from_bytes(ser.read(2),byteorder='big',signed=False)
           print(str(distance/1000) + 'm')

常用方法

在创建串口对象后,即ser = serial.Serial('/dev/ttyUSB0'),可以操作串口读写。

  • ser.read(size)
  • ser.readline(size)
  • ser.write(str_data)
  • ser.close()

具体使用参见官方文档API

参考

API参考