欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PySerial库的简单用法

程序员文章站 2022-06-03 20:31:16
...

import serial

API:pySerial API — pySerial 3.4 documentation

这次尝试适用PySerial库是为了从树莓派小车连接的UWB定位模块的串口中,获取与解析出串口所传输的定位信息。以下是在尝试过程中使用到的一些小代码段~希望记录下来可以帮到大家~


1、查看串口列表:serial.tools.list_ports.comports()

ports = serial.tools.list_ports.comports()
# 寻找名字"CH340 "的串口
for port, desc, hwid in sorted(ports):
    if "CH340 " in desc:
        self.UWB_port = port
        print("INFO:UWB所占用串口为:{}: {} [{}]".format(port, desc, hwid))

2、打开串口:ser.Serial()

方法1:
ser = serial.Serial('/dev/ttyUSB0')

方法2:
>>> ser = serial.Serial()
>>> ser.baudrate = 19200
>>> ser.port = 'COM1'
>>> ser
Serial<id=0xa81c10, open=False>(port='COM1', baudrate=19200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)
>>> ser.open()
>>> ser.is_open # 判断串口是否打开 bool
True
>>> ser.close()
>>> ser.is_open
False

3、读串口信息

read(size=-1)size – Number of bytes to read.

readline():按顺序读取串口数据,当不指定timeout时,会一直等待读新的一行。

readlines():需要有timeout和EOF(end of file)

*不太理解:

Python file的flush()方法:用来刷新缓冲区。将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要被动等待输出缓冲区写入。一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

(缺点也很明显,读写磁盘都属于IO操作,那么这样频繁的写磁盘,就会导致大量IO,对系统的性能有影响)

*进度条

4、其他

inWaiting(): Get the number of bytes in the input buffer获取输入缓冲区中的字节数。

PySerial库的简单用法

5、关闭串口:ser.close()