Python Serial通信简介

概述

串行通信是一种在计算机和外部设备之间传输数据的方式。Python提供了一个名为serial的模块,用于通过串行端口进行通信。这个模块使得在Python中实现串行通信非常简单。本篇文章将介绍如何使用Python的serial模块进行串行通信,并提供一些示例代码来演示其用法。

安装serial模块

在开始之前,我们需要先安装serial模块。可以使用以下命令来安装:

pip install pyserial

打开和关闭串行端口

在使用serial模块进行串行通信之前,我们需要先打开一个串行端口。示例代码如下:

import serial

# 打开串行端口
ser = serial.Serial('COM1', 9600)  # 将'COM1'替换为你的串行端口名称,9600为波特率

# 关闭串行端口
ser.close()

在打开串行端口时,我们需要传递两个参数:端口名称和波特率。端口名称通常是一个字符串,表示串行端口的标识符,例如COM1/dev/ttyUSB0等。波特率是数据传输的速度,它指定了每秒传输的位数。常见的波特率包括9600、115200等。打开串行端口后,我们可以使用ser.close()方法来关闭它。

读取和写入数据

一旦打开了串行端口,我们就可以通过它进行数据的读取和写入。以下是一些常用的读取和写入方法:

  • ser.read(size):从串行端口读取指定数量的字节数据。
  • ser.readline():从串行端口读取一行数据,以换行符为结束标志。
  • ser.write(data):将数据写入串行端口。

示例代码如下:

import serial

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

# 读取数据
data = ser.read(10)  # 从串行端口读取10个字节的数据
line = ser.readline()  # 从串行端口读取一行数据

# 写入数据
ser.write(b'Hello')  # 将字符串'Hello'写入串行端口

# 关闭串行端口
ser.close()

在读取数据时,我们可以使用ser.read(size)方法指定要读取的字节数。如果不指定size,则默认读取所有可用的字节。使用ser.readline()方法可以读取一行数据,以换行符为结束标志。

在写入数据时,我们需要将要写入的数据作为参数传递给ser.write(data)方法。注意,在Python中,字符串需要使用前缀b来表示字节字符串。

设置串行端口属性

除了打开和关闭串行端口以外,我们还可以设置一些属性来配置串行通信。以下是一些常用的串行端口属性:

  • ser.baudrate:波特率。
  • ser.bytesize:数据位数,常用的取值为5、6、7、8。
  • ser.parity:校验位,常用的取值为serial.PARITY_NONEserial.PARITY_EVENserial.PARITY_ODD等。
  • ser.stopbits:停止位,常用的取值为1、1.5、2。
  • ser.timeout:读取超时时间,单位为秒。

示例代码如下:

import serial
import time

# 打开串行端口
ser = serial.Serial('COM1')

# 配置串行端口属性
ser.baudrate = 9600
ser.bytesize = serial.EIGHTBITS
ser.parity = serial.PARITY_NONE
ser.stopbits = serial.STOPBITS_ONE
ser.timeout = 1

# 读取数据
data = ser.readline()
print(data)

# 关闭串行端口
ser.close()

在上述示例代码中,我们首先打开了一个串行端口。然后,通过修改ser对象的属性来配置串行端口的属性。最后,我们使用ser.readline()方法读取一行数据,并将其打