python读取串口数据
1. 介绍
串口通信是一种通过电缆或无线电信号传输数据的通信方式,它可以用于连接计算机与各种外部设备,如传感器、调试工具等。在Python中,我们可以使用pyserial
库来进行串口通信,通过读取串口数据我们可以实现各种功能,例如数据采集、实时监控等。
本文将详细介绍如何使用Python读取串口数据,并给出示例代码及运行结果。
2. 准备工作
为了使用pyserial
库读取串口数据,我们首先需要安装该库。通过以下命令可以使用pip来安装pyserial
:
pip install pyserial
3. 读取串口数据
在开始读取串口数据之前,我们需要先了解一些常见的串口参数,例如端口号、波特率、数据位、停止位、校验位等。这些参数可以根据具体的串口设备来设置,它们在打开串口时需要指定。
3.1 打开串口
在开始读取数据之前,我们需要先打开串口,以便与设备建立连接。pyserial
库提供了serial.Serial
类来实现串口的打开和关闭操作。以下是一个打开串口的示例代码:
import serial
# 创建串口实例
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
# 打开串口
ser.open()
# 判断串口是否已经打开
if ser.is_open:
print("串口已打开")
else:
print("串口打开失败")
# 关闭串口
ser.close()
在示例代码中,我们创建了一个serial.Serial
的实例,并指定了串口号为COM1
,波特率为9600,超时时间为1秒。然后通过调用open
方法打开串口。最后通过判断is_open
属性来确认串口是否成功打开,若成功打开则输出”串口已打开”,否则输出”串口打开失败”。最后通过调用close
方法关闭串口。
3.2 读取数据
串口打开后,我们就可以使用read()
方法来读取串口数据。read()
方法有一个可选参数size
来指定读取数据的长度,默认为1。以下是一个读取串口数据的示例代码:
import serial
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
ser.open()
if ser.is_open:
print("串口已打开")
# 读取数据
data = ser.read(10)
print(f"读取到的数据:{data}")
ser.close()
在示例代码中,我们调用read(10)
方法来读取10个字符的数据,并将结果存储到变量data
中。最后通过打印data
来显示读取到的数据。
3.3 循环读取数据
在实际应用中,我们通常需要以循环的方式不断读取串口数据,并进行相应的处理。以下是一个循环读取串口数据的示例代码:
import serial
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
ser.open()
if ser.is_open:
print("串口已打开")
while True:
# 读取数据
data = ser.read(1)
print(f"读取到的数据:{data}")
ser.close()
在示例代码中,我们使用while True
循环来不断读取串口数据。read(1)
方法每次读取一个字符的数据,并将结果存储到变量data
中。最后通过打印data
来显示每次读取到的数据。
3.4 读取特定长度的数据
除了使用循环读取单个字符的数据,我们还可以使用read(size)
方法读取特定长度的数据。以下是一个读取特定长度数据的示例代码:
import serial
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
ser.open()
if ser.is_open:
print("串口已打开")
# 读取5个字符的数据
data = ser.read(5)
print(f"读取到的数据:{data}")
ser.close()
在示例代码中,我们调用read(5)
方法来读取5个字符的数据,并将结果存储到变量data
中。最后通过打印data
来显示读取到的数据。
4. 示例运行结果
下面是一个完整的示例代码及其运行结果,用于读取串口数据并打印输出:
import serial
ser = serial.Serial(port='COM1', baudrate=9600, timeout=1)
ser.open()
if ser.is_open:
print("串口已打开")
while True:
# 读取数据
data = ser.read(1)
print(f"读取到的数据:{data}")
ser.close()
运行结果如下:
串口已打开
读取到的数据:b'A'
读取到的数据:b'B'
读取到的数据:b'C'
...
在运行示例代码时,确保正确设置了串口参数,并且在串口中有发送数据,即可实时读取到串口数据并进行处理。
5. 总结
本文介绍了如何使用Python读取串口数据。通过了解串口参数、打开串口、读取数据的过程,我们可以灵活应用串口通信来实现各种功能,例如数据采集、实时监控等。