当前位置: 首页 > news >正文

Python串口接收数据并实时显示波形 - Windows

Python串口接收数据并实时显示波形 - Windows

陈拓 2025/04/10-2025/04/10

1. 安装Python

  • 从Microfoft Store安装

点击获取

  • 安装完成

2. 连接串口设备

  • 查看串口号

串口号COM4。

  • 通过串口助手查看串口数据

随意安装一个串口助手就行,我这个是从Microfoft Store安装的。

查看完数据要关闭串口,否则下面的程序会因为串口被占用而无法运行。

3. 使用 Python 读取串口数据

3.1 写代码文件

  • 打开一个命令行终端
  • 用下面的命令通过记事本(Notepad)编辑Python代码文件

notepad serial-data.py

创建新文件:

import serial

try:
    # 打开串口连接
    # 'COM4' 是串口名称,你需要根据实际情况修改
    # 115200 是波特率,要和发送端保持一致
    # timeout=1 表示超时时间为 1 秒
    ser = serial.Serial('COM4', 115200, timeout=1)

    print(f"成功连接到串口: {ser.name}")

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

except serial.SerialException as e:
    print(f"串口连接出错: {e}")
except KeyboardInterrupt:
    print("用户手动终止程序。")
finally:
    if 'ser' in locals() and ser.is_open:
        ser.close()
        print("串口已关闭。")

  • 代码说明
  1. 导入模块:导入 serial 模块以使用串口通信功能。
  2. 打开串口:使用 serial.Serial 函数打开指定的串口,需要传入串口名称、波特率和超时时间。
  3. 读取数据:在一个无限循环中,使用 ser.readline() 方法读取一行数据,并将其解码为字符串。
  4. 异常处理:使用 try-except 块捕获可能出现的串口连接错误和用户手动终止程序的情况。
  5. 关闭串口:在程序结束时,确保关闭串口连接,释放资源。

3.2 安装pyserial库

为Python 环境安装 pyserial 库,以实现串口通信。

pip install pyserial

警告:脚本pyserial-miniterm.exe和pyserial-ports.exe安装在'C:\Users\26025\AppData\Local\Packages\PythonSoftwareFoundation中。Python.3.13_qbz5n2kfra8p0\LocalCache\local packages\Python313\Scripts'不在环境变量PATH中。

可以将此目录添加到PATH中。

3.3 测试

  • 运行Python程序

python serial-data.py

Ctrl+C退出程序。

  • 数据格式

接收到的数据: x_value: 5.654867, y_value: -0.533738

接收到的数据: x_value: 5.969026, y_value: -0.355825

接收到的数据: x_value: 0.000000, y_value: 0.000000

接收到的数据: x_value: 0.314159, y_value: 0.372770

接收到的数据: x_value: 0.628319, y_value: 0.559154

接收到的数据: x_value: 0.942478, y_value: 0.838731

4. 将读出的数据以波形显示

4.1 写代码文件

  • 用下面的命令通过记事本(Notepad)编辑Python代码文件

notepad serial-plot.py

创建新文件:

import serial
import matplotlib.pyplot as plt

try:
    ser = serial.Serial('COM4', 115200, timeout=1)

    print(f"成功连接到串口: {ser.name}")

    # 初始化存储 x 和 y 值的列表
    x_values = []
    y_values = []

    # 初始化图形窗口
    plt.ion()
    fig, ax = plt.subplots()

    while True:
        # 读取一行数据
        data = ser.readline().decode('utf-8').strip()
        if data:
            print(f"接收到的数据: {data}")
            try:
                # 提取 x_value 和 y_value
                x_str = data.split('x_value: ')[1].split(',')[0]
                y_str = data.split('y_value: ')[1]
                x = float(x_str)
                y = float(y_str)
                x_values.append(x)
                y_values.append(y)

                # 绘制波形图
                ax.clear()
                ax.plot(x_values, y_values)
                plt.draw()
                plt.pause(0.1)
            except (IndexError, ValueError):
                print("数据解析出错,请检查数据格式。")

except serial.SerialException as e:
    print(f"串口连接出错: {e}")
except KeyboardInterrupt:
    print("用户手动终止程序。")
finally:
    if 'ser' in locals() and ser.is_open:
        ser.close()
        print("串口已关闭。")
    plt.close()

  • 代码说明
  1. 导入模块:新增导入 matplotlib.pyplot 模块,用于绘图。
  2. 初始化列表:定义 x_values 和 y_values 列表,用来存储从串口接收到的 x 和 y 值。
  3. 初始化图形窗口:使用 plt.ion() 开启交互模式,创建图形窗口和坐标轴。
  4. 数据解析:在接收到数据后,通过字符串分割和类型转换提取出 x 和 y 值,并添加到对应的列表中。
  5. 绘图:每次接收到新数据后,清空当前图形,重新绘制 x 和 y 的波形图,然后更新图形窗口。
  6. 异常处理:添加了对数据解析过程中可能出现的 IndexError 和 ValueError 的处理。
  7. 关闭资源:在程序结束时,关闭串口连接和图形窗口。

4.2 安装matplotlib库

这个库用于在Python 环境中绘制图形。

pip install matplotlib

4.3 测试

  • 运行Python程序

python serial-plot.py

近似正弦波。

相关文章:

  • 国内做的比较好的网站是什么正规推广平台
  • 网站建设政府采购怎么找百度客服
  • 一级a做爰片性av免费网站软文是什么意思?
  • 外国人做汉字网站淘宝关键词优化
  • 政府网站建设年度报告网络营销顾问
  • 做网站推广 优帮云百度里面的站长工具怎么取消
  • 机器学习详解(19):长短期记忆网络LSTM原理详解
  • 25年时代电服社招入职Verify测评SHL题库语言理解数字推理考什么?
  • DP扰码模块verilog仿真
  • 07-CompletableFuture异步编程实战与陷阱规避
  • 【MySQL】001.MySQL安装
  • 【11408学习记录】英语语法精讲:主从复合句之状语从句全解析——以时间状语从句为例
  • go打包配置文件
  • 【自然语言处理】深度学习中文本分类实现
  • 鸿蒙5.0 非桌面页面,设备来电后挂断,自动返回桌面
  • 计算机网络起源
  • lanqiaoOJ 2489 进制
  • LangChain-记忆系统 (Memory)
  • 【JAVA】JVM 堆内存“缓冲空间”的压缩机制及调整方法
  • 前端-Vue2组件化编程
  • 电脑卡顿严重怎么办 电脑卡顿的处理指南
  • WPF 五子棋项目文档
  • 电脑命名配置很高,为什么运行软件特别卡
  • transformers:打造的先进的自然语言处理
  • jdk21、17、11安装包
  • 【前端】事件循环专题