Python3 串口通信

串口通信是一种用于在计算机和外部设备之间传输数据的常见方式之一。Python3提供了强大的串口通信工具,使得开发者能够轻松地通过串口与其他设备进行通信。本文将介绍如何使用Python3进行串口通信,并提供相应的代码示例。

串口通信基础

串口通信是通过串行通信接口将数据从一个设备传输到另一个设备。串口通信中的两个主要概念是波特率和数据位。波特率定义了每秒钟传输的位数,数据位定义了每个字节的位数。

常用的串口通信配置如下:

配置项 描述
波特率 数据传输速率,以位每秒(bps)为单位
数据位 每个字节的位数,通常为8位或者9位
停止位 用于标识一个数据包的结束的位数,通常为1位
校验位 用于检验传输数据的准确性,通常为奇偶校验位
流控制 控制数据的传输速率

Python3 串口通信模块

Python3提供了pyserial模块来实现串口通信。该模块支持Windows、Linux和macOS等操作系统,并提供了丰富的API来进行串口通信。

安装 pyserial

在开始使用 pyserial 之前,我们需要先安装该模块。可以通过使用 pip 命令来安装 pyserial:

pip install pyserial

打开串口

使用 pyserial 可以轻松地打开一个串口。下面的代码示例展示了如何打开一个名为 COM1 的串口:

import serial

# 打开串口
ser = serial.Serial('COM1', 9600)

发送数据

打开串口后,我们可以使用 write() 方法来向串口发送数据。下面的代码示例展示了如何向串口发送一个字节的数据:

# 向串口发送数据
ser.write(b'A')

接收数据

使用 pyserial 可以轻松地从串口接收数据。下面的代码示例展示了如何从串口接收一个字节的数据:

# 从串口接收数据
data = ser.read()

# 将数据转换为字符串
data_str = data.decode('utf-8')

关闭串口

在使用完串口后,我们需要通过 close() 方法来关闭串口:

# 关闭串口
ser.close()

示例应用:读取温湿度传感器数据并绘制饼状图

现在我们来看一个实际的示例应用:读取温湿度传感器数据并绘制饼状图。假设我们的温湿度传感器通过串口连接到计算机。

首先,我们需要安装 matplotlib 模块来绘制饼状图。可以使用 pip 命令来安装:

pip install matplotlib

下面的代码示例展示了如何读取温湿度传感器数据,并绘制相应的饼状图:

import serial
import matplotlib.pyplot as plt

# 打开串口
ser = serial.Serial('COM1', 9600)

# 读取温湿度传感器数据
data = ser.readline().decode('utf-8')

# 解析数据
temperature, humidity = data.split(',')

# 绘制饼状图
labels = ['Temperature', 'Humidity']
sizes = [float(temperature), float(humidity)]
colors = ['#ff9999', '#66b3ff']
explode = (0.1, 0)

plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90)
plt.axis('equal')

# 显示图形
plt.show()

# 关闭串口
ser.close()

在上面的代码中,我们首先打开了串口,然后通过 readline() 方法从串口读取