在嵌入式软件自动化测试中,串口通信是一个常用且重要的方式。通过串口,计算机可以与嵌入式设备进行实时数据交换。Python 提供了 pyserial 模块,使得串口通信变得相对简单和灵活。本文将介绍如何使用 pyserial 模块进行串口数据的读写。

环境准备

首先,确保已安装 pyserial 模块。如果尚未安装,可以通过 pip 命令进行安装:

pip install pyserial

基本概念

串口通信的基本流程是:打开串口 -> 发送数据 -> 接收数据 -> 关闭串口。在编写代码时,需要注意端口号、波特率、超时设置等参数。

代码示例

以下是一个简单的串口读写示例,将演示如何发送数据到串口并从串口接收数据。

import serial
import time

# 配置串口参数
port = 'COM3'  # 串口号,根据具体情况修改
baudrate = 9600  # 波特率
timeout = 1  # 超时设置

try:
    # 创建串口对象
    ser = serial.Serial(port, baudrate, timeout=timeout)
    print(f"打开串口: {port},波特率: {baudrate}")

    # 等待串口稳定
    time.sleep(2)

    # 发送数据
    data_to_send = "Hello, Embedded Device!"
    ser.write(data_to_send.encode('utf-8'))  # 发送时需要编码
    print(f"发送数据: {data_to_send}")

    # 接收数据
    received_data = ser.readline().decode('utf-8').strip()  # 按行读取
    print(f"接收到的数据: {received_data}")

except serial.SerialException as e:
    print(f"串口错误: {e}")
except Exception as e:
    print(f"发生错误: {e}")
finally:
    if ser.is_open:
        ser.close()  # 确保关闭串口
        print("已关闭串口")

代码详解

  1. 导入模块:首先导入 serial 模块和 time 模块。time 模块主要用于等待串口稳定。

  2. 配置串口参数:根据实际的开发环境配置串口号(如 COM3)和波特率(如 9600)。

  3. 打开串口:使用 serial.Serial() 创建串口对象,并通过 open() 方法打开它。这里需要设置超时,防止在读取数据时程序一直阻塞。

  4. 发送数据:通过 ser.write() 方法发送数据。在发送前,需要将字符串编码成字节格式。

  5. 接收数据:使用 ser.readline() 方法读取数据,读取时要注意进行解码和去除多余的空白字符。

  6. 异常处理:使用 tryexcept 语句处理可能出现的串口异常。

  7. 关闭串口:最后,通过 ser.close() 确保串口被正常关闭,以释放资源。

注意事项

  • 串口号在不同操作系统中有所不同,Windows 一般使用 COM 前缀,而 Linux 使用 /dev/ttyUSB0 等格式。
  • 在串口读写过程中的波特率和其他设置必须与嵌入式设备保持一致。
  • 在实际应用中应考虑并发读写、数据完整性和错误处理等问题,以提高代码的健壮性。

总结

通过使用 pyserial 模块,Python 提供了简单而强大的串口通信能力,能够在嵌入式软件自动化测试中发挥重要作用。以上示例代码展示了串口的基本操作,用户可以根据需要进行扩展和修改,以满足特定的测试需求。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部