Files
line-laser-hmi/README.md
T
2026-06-22 14:39:30 +08:00

2.7 KiB
Raw Blame History

line-laser-hmi

线激光视觉设备与运动控制器的 Qt 上位机(HMI,基于 line-laser-modbus 协议库,提供连接管理、模式控制、状态与位姿监控、实时曲线、手动下发和数据录制。

设计文档见 docs/design.md,协议文档见 line-laser-modbus/docs/proto.md

功能

  • 串口连接配置与自动枚举 COM 口,模拟模式无需硬件即可运行
  • 5 种普通工作模式切换(按协议状态机校验)与独立急停按钮
  • 设备状态字、时间戳、可用缓存数量(0xD002)、通信超时实时监控
  • 当前 6 轴位姿数码显示与实时趋势曲线
  • 手动下发目标示教位姿 / 纠偏量,设置在线跟踪自动纠偏目标;手动下发按当前模式限制,目标示教位姿写入前检查 0xD002 可用缓存数量
  • 50ms 后台轮询、150ms 单帧超时(独立线程,不阻塞界面),连接成功后自动启动
  • 快照录制为 CSV,通信日志独立窗口(菜单「视图 → 日志窗口」,Ctrl+L)可导出

安装与运行

python -m uv sync --default-index https://mirrors.ustc.edu.cn/pypi/simple
python -m uv run line-laser-hmi

或:

python -m uv run python -m line_laser_hmi

首次启动默认勾选「模拟模式」,直接点击「连接」即可(连接成功后自动开始轮询),位姿与曲线立即动起来。

--default-index 仅用于把 PySide6pymodbus 等公网依赖切到国内镜像加速,协议库走本地路径,不经过镜像。

协议库依赖(line-laser-modbus

本项目不从 PyPI 安装协议库,而是以 uv 路径依赖 方式引用同仓库 line-laser-modbuspyproject.toml 中两段配合:

[project]
dependencies = [
    "line-laser-modbus",   # 声明依赖(包名取自 $dir/pyproject.toml 的 [project].name
    "PySide6>=6.7",
    "pyqtgraph>=0.13.7",
    "pyserial>=3.5",
]

[tool.uv.sources]
line-laser-modbus = { path = "../xxx" }   # 指明从本地 ../xxx 目录安装,而非 PyPI

python -m uv sync 时 uv 会把 ../xxx 作为本地包(可编辑安装)装入 .venv

连接真实设备

取消「模拟模式」,在连接面板选择串口、确认波特率/从站地址,或先修改根目录 config.toml

[serial]
port = "COM3"
slave_id = 8
baudrate = 115200

[polling]
interval_seconds = 0.05

[ui]
simulate = false
record_dir = "records"

测试

非 GUI 逻辑(配置、录制、模拟后端)可无显示运行:

python -m uv run pytest
python -m uv run ruff check