文章目录

  • python serial模块
  • serial模块简介
  • serial模块使用方法
  • 1. 打开串口,设置相关属性
  • 2. 发送数据
  • 3. 接收数据


python serial模块

serial模块简介

  • 串口(serial),全称串行通信接口或串行通讯接口,是一种常用于电子设备间通讯的全双工扩展接口
  • 串行通信:串口通讯的技术基础,指一位一位地按顺序传送数据。其特点是线路简单,只需一对传输线,即可实现双向通信,大大降低成本。适用于远距离通信,但速度较慢;
  • 串口通信讲解:你真的了解串口 (Serial)吗?
  • pyserial为python中处理串口通讯的一个模块名,模块安装下载:pip install pyserial
  • pyserial官方介绍文档

serial模块使用方法

1. 打开串口,设置相关属性

  • 新建打开一个serial实例
import serial
if __name__ == '__main__':
    ser = serial.Serial()
    ser.port = 'COM1'      
    ser.baudrate = 115200 
    print(ser)
'''
# 打印内容如下:
Serial<id=0x1c695f0d340, open=True>
(port='COM1',          -> 读或者写端口
baudrate=115200,       -> 波特率
bytesize=8,            -> 字节大小
parity='N',            -> 校验位
stopbits=1,            -> 停止位
timeout=None,          -> 超时设置
xonxoff=False,         -> 软件流控
rtscts=False,          -> 硬件流控
dsrdtr=False)          -> 硬件流控
'''
  • 常用方法

方法

说明

ser.isOpen()

查看端口是否被打开

ser.open()

打开端口

ser.close()

关闭端口

ser.read()

从端口读字节数据。默认1个字节。

ser.read_all()

从端口接收全部数据。

ser.write(“hello”)

向端口写数据。

ser.readline()

读一行数据。

ser.readlines()

读多行数据。

in_waiting()

返回接收缓存中的字节数。

flush()

等待所有数据写出。

flushInput()

丢弃接收缓存中的所有数据。

flushOutput()

终止当前写操作,并丢弃发送缓存中的数据。

2. 发送数据

  • 发送数据方法
import serial
if __name__ == '__main__':
    ser = serial.Serial('COM1', 115200)
    success_bytes = ser.write(b'This is data for test\r\n') 
    # b表示bytes类型, 直接发送字符串报错
    print(success_bytes) # 发送数据长度

3. 接收数据

  • read方法接收
  • read(size),接收size单位的字符,默认接收一个字节
  • 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
  • 如果设置了超时时间,时间未到则一直等待
import serial
if __name__ == '__main__':
    ser = serial.Serial('COM1', 115200)
    data = ser.read(11) # 读取11字符
    print(data) # 打印格式 :b'hello world'
  • readline方法接收
  • readline()是按行读取,即读到换行符是停止读取
  • 该方法是阻塞的,在没设置超时时间下,不接收到size单位的字符就一直等待接收
  • 如果设置了超时时间,时间未到则一直等待
import serial
if __name__ == '__main__':
    ser = serial.Serial('COM1', 115200)
    data = ser.readline() # 读取到换行符为止
    print(data) # 打印格式 :b'hello world\n'

参考文章:https://www.jianshu.com/p/4765bf2908fb


感谢阅读 若有错误 敬请见谅 !!!