Files
DTU-RemtoeLCD/README.md
Wanderingss f7898adc5d 1. 修改了,远程服务端断开就卡死的bug,
2. 修改图像解析逻辑,使其支持DTU-HMI 的图像格式,不再支持原来的图像格式,不能显示原来设备发来的图像
2026-03-12 18:06:07 +08:00

4.0 KiB
Raw Permalink Blame History

DTU-RemoteLCD - 远程显示通信工具

RemoDispBus 协议兼容的远程 LCD 显示与按键模拟工具。通过网络连接 DTU 装置,在 Web 浏览器中实时查看 LCD 画面并模拟按键操作,适用于调试、监控等场景。

功能特性

  • 实时屏幕显示:将装置 LCD 显存以 1bpp 位图形式拉取并渲染为 PNG
  • 按键模拟:支持方向键、确认、返回、复归等按键
  • WebSocket 传输:采用 Socket.IO服务端主动推送约 100ms 刷新
  • 跨平台:浏览器访问,无需安装客户端

环境要求

  • Python 3.7+
  • 与 DTU 装置网络互通(默认端口 7003

快速开始

1. 安装依赖

pip install -r requirements.txt

2. 启动服务

python remo_disp_server.py [装置IP]

启动后访问 http://localhost:8181

3. 使用说明

  • 点击「连接」→ 输入装置 IP 和端口(默认 7003→ 连接
  • 左侧显示装置 LCD 画面(约 100ms 刷新)
  • 右侧使用方向键、确认、复归、返回进行按键操作
  • 点击「断开」断开与装置的连接

可选预连接:启动时传入 IP 可预连接装置,例如:

python remo_disp_server.py 192.168.253.3

打包为 exeWindows

在项目目录下执行:

# 安装 PyInstaller 后打包
pip install pyinstaller
python -m PyInstaller remo_disp_server.spec --noconfirm

或直接双击运行 build_exe.bat

打包完成后可执行文件为 dist\remo_disp_server.exe。双击运行,或在命令行:

dist\remo_disp_server.exe
dist\remo_disp_server.exe 192.168.253.3

运行后浏览器访问 http://localhost:8181。日志会输出到控制台同目录下会生成 remo_disp.log

项目结构

DTU-RemoteLCD/
├── remo_disp_server.py    # Web 服务Flask + Socket.IO
├── remo_disp_server.spec  # PyInstaller 打包配置
├── build_exe.bat           # 一键打包脚本Windows
├── remo_disp_ui.html      # Web 前端页面
├── requirements.txt       # Python 依赖
├── static/                # 静态资源(可选)
│   └── favicon.ico        # 网站图标
└── README.md

协议说明

项目 说明
端口 7003
工具 → 装置 [0xAA][功能码][长度高][长度低][数据...][CRC]
装置 → 工具 [0xBB][功能码][长度高][长度低][数据...][CRC]
CRC 数据区逐字节异或,取低 8 位
刷新屏幕请求
AA 03 00 04 00 00 00 00 00   

功能码

名称 说明
0 KEEPLIVE 保活
1 INIT 初始化,获取屏幕宽高、显存大小
2 KEY 按键
3 LCDMEM 读取显存(屏幕画面)

按键映射

键名 协议码 说明
U 0x02
D 0x40
L 0x10
R 0x08
ENT 0x20 确认
ESC 0x01 返回/取消
RESET 0x04 复归
F2 0x80 F2

依赖说明

依赖 用途
Flask Web 框架
flask-socketio WebSocket 支持
python-socketio Socket.IO 服务端
Pillow 1bpp 位图转 PNG
loguru 结构化日志、错误追踪

日志与调试

  • 后端使用 loguru 输出日志,默认会打印到控制台,并写入当前目录下的 remo_disp.log
  • remo_disp_server.py 顶部有 LOG_LEVEL 常量:
    • LOG_LEVEL = "INFO":只输出 INFO/WARNING/ERROR 级别日志(默认)。
    • LOG_LEVEL = "DEBUG":输出包括 DEBUG 在内的详细调试信息。
  • exe 版本(remo_disp_server.exe)同样会在运行目录生成 remo_disp.log,方便线下排查问题。

配置说明

  • Web 服务端口:默认 8181remo_disp_server.pymain() 中修改
  • 装置端口:默认 7003连接时可输入自定义端口
  • Favicon:将 favicon.ico 放入 static/ 目录即可显示网站图标

许可证

本项目仅供内部调试使用。