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_NONE
、serial.PARITY_EVEN
、serial.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()
方法读取一行数据,并将其打