Python 串口通信的实现

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串口通信的基本操作,并通过一个示例演示了如何实时显示温度传感器的数值。希望本文对你理解和使用串口通信功能有所帮助。

后端开发标签