1. 介绍
串口通信是指通过串口进行数据传输的一种方式,它广泛应用于嵌入式系统开发、工业自动化等领域。在Python中,我们可以使用第三方库pyserial来实现串口通信功能。
2. 安装pyserial库
在开始之前,我们首先需要安装pyserial库。可以使用pip命令来进行安装:
pip install pyserial
3. 打开串口
在开始进行串口通信之前,我们需要先打开串口。可以使用pyserial的serial.Serial()函数来打开串口。下面是打开串口的一个示例:
import serial
# 打开串口
ser = serial.Serial('/dev/ttyUSB0', 9600)
# 打开串口成功
if ser.is_open:
print("串口打开成功!")
else:
print("串口打开失败!")
上述代码中,我们使用serial.Serial()函数打开了一个名为/dev/ttyUSB0的串口,波特率为9600。如果串口打开成功,即ser.is_open为True,则打印"串口打开成功!",否则打印"串口打开失败!"。
4. 读取数据
打开串口之后,我们可以通过ser.read()函数读取串口中的数据。该函数将会阻塞程序的执行,直到读取到数据或者设定的超时时间到达。下面是一个读取串口数据的示例:
# 读取串口数据
data = ser.read()
# 打印读取到的数据
print("读取到的数据:", data)
上述代码中,我们使用ser.read()函数读取了一个字节的数据,并将其赋值给变量data。然后,我们使用print()函数打印了读取到的数据。
5. 写入数据
除了读取数据,我们还可以使用ser.write()函数向串口写入数据。下面是一个向串口写入数据的示例:
# 向串口写入数据
ser.write(b'Hello, World!')
# 写入数据完成
print("数据写入完成!")
上述代码中,我们使用ser.write()函数向串口写入了一个字符串数据"Hello, World!",需要注意的是,ser.write()函数接受的是字节类型的数据,因此我们需要在字符串前面加上`b`来将其转换为字节类型。数据写入完成后,会打印"数据写入完成!"。
6. 关闭串口
在完成串口通信的操作后,我们需要使用ser.close()函数来关闭串口。下面是一个关闭串口的示例:
# 关闭串口
ser.close()
# 串口已关闭
if ser.is_open:
print("串口未关闭!")
else:
print("串口已关闭!")
上述代码中,我们使用ser.close()函数关闭了串口。关闭串口后,如果ser.is_open为False,则打印"串口已关闭!",否则打印"串口未关闭!"。
7. 示例:温度传感器实时显示
7.1 硬件准备
在进行示例之前,我们需要准备一块温度传感器。我们可以使用DS18B20温度传感器,它是一种广泛应用于温度测量的数字温度传感器。连接示意图如下:
7.2 代码实现
下面是使用pyserial库实现温度传感器实时显示的示例代码:
import serial
# 打开串口
ser = serial.Serial('/dev/ttyUSB0', 9600)
# 打开串口成功
if ser.is_open:
print("串口打开成功!")
else:
print("串口打开失败!")
try:
while True:
# 读取串口数据
data = ser.readline()
# 温度数据处理
temperature = float(data)
# 输出温度值
print("当前温度:{:.2f}°C".format(temperature))
except KeyboardInterrupt:
# 用户中断程序
print("用户中断程序!")
finally:
# 关闭串口
ser.close()
# 串口已关闭
if ser.is_open:
print("串口未关闭!")
else:
print("串口已关闭!")
上述代码中,我们使用ser.readline()函数读取了一行的数据,并将其赋值给变量data。然后,我们将data转换为浮点类型的温度值,并使用print()函数输出当前温度的值。在用户按下Ctrl+C中断程序后,我们会关闭串口并打印相应的提示信息。
7.3 运行示例
在运行示例之前,我们需要将温度传感器连接到计算机,并确认串口的名称和波特率是否正确。然后,可以使用Python解释器运行示例代码:
python temperature_display.py
在运行示例之后,我们可以看到实时显示的温度值:
当前温度:25.60°C当前温度:25.65°C
当前温度:25.70°C
...
8. 总结
通过本文,我们学习了使用pyserial库来实现Python串口通信的基本操作,并通过一个示例演示了如何实时显示温度传感器的数值。希望本文对你理解和使用串口通信功能有所帮助。