欢迎访问宙启技术站
智能推送

Python编写案例:通过串口与硬件设备进行通信

发布时间:2023-12-04 18:06:01

通过串口与硬件设备进行通信是一种常见的应用场景,可以用于与各种外部设备进行数据交互,例如与传感器、继电器、Arduino等连接。Python提供了丰富的库用于串口通信,本文将通过一个简单的案例介绍如何使用Python与串口设备进行通信。

假设我们通过串口连接了一个温湿度传感器,并希望通过Python读取传感器的数据。下面是一个使用Python与串口设备进行通信的示例代码:

import serial
import time

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

while True:
    # 发送指令获取数据
    ser.write(b'get_data')

    # 等待传感器返回数据
    time.sleep(0.1)

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

    # 解析数据
    if data:
        temperature, humidity = data.decode().strip().split(',')
        print(f'Temperature: {temperature}°C, Humidity: {humidity}%')

    # 延时一段时间后继续读取数据
    time.sleep(1)

# 关闭串口
ser.close()

上述代码中,首先通过serial.Serial()函数打开串口。该函数接收三个参数,分别是串口名、波特率和超时时间。在示例中,我们将串口名设置为COM1,波特率设置为9600,超时时间设置为0.5秒。

在主循环中,我们首先使用ser.write()函数发送指令给传感器,这里的指令是一个字符串'get_data',可以根据实际情况自由设置。然后使用time.sleep()函数等待传感器返回数据。

接下来,我们使用ser.readline()函数读取串口数据。该函数会读取一行数据,以换行符为界限。如果传感器成功返回数据,我们会使用data.decode()函数将字节数据转换为字符串,并使用strip()函数移除字符串两端的空白字符。然后使用split(',')函数将字符串按逗号分割成温度和湿度两部分,并分别存储到temperaturehumidity变量中。最后,我们使用print()函数将温度和湿度打印出来。

在读取完数据后,我们使用time.sleep()函数延时一段时间,再继续读取下一次的数据。

最后,在代码的结尾处,我们使用ser.close()函数关闭串口。

需要注意的是,上述示例中使用了time.sleep()函数来等待数据返回和延时读取,这是为了简化代码,实际应用中应根据具体设备的响应时间来调整延时时间。

通过以上的代码示例,我们可以看到,使用Python与串口设备进行通信非常简单。通过串口通信,我们可以与各种硬件设备进行数据交互,实现各种应用需求。无论是与传感器获取数据,还是与继电器控制设备,Python都提供了丰富的库和工具来帮助我们实现串口通信。