391fae9f0e79bfd9070f6a7a8612f56c5af878aa
DTU-RemoteLCD - 远程显示通信工具
与 RemoDispBus 协议兼容的远程 LCD 显示与按键模拟工具。通过网络连接 DTU 装置,实时查看 LCD 显存画面并模拟按键操作,适用于调试、监控等场景。
功能特性
- 实时屏幕显示:将装置 LCD 显存以 1bpp 位图形式拉取并渲染
- 按键模拟:支持方向键、确认、返回、复归等按键
- 多种使用方式:命令行、GUI、Web 浏览器
- WebSocket 传输:Web 版采用 Socket.IO,服务端主动推送,低延迟
环境要求
- Python 3.7+
- 与 DTU 装置网络互通(默认端口 7003)
快速开始
1. 安装依赖
pip install -r requirements.txt
2. Web 界面(推荐)
python remo_disp_server.py [装置IP]
启动后访问 http://localhost:8181,在页面中:
- 点击「连接」→ 输入装置 IP 和端口(默认 7003)→ 连接
- 左侧显示装置 LCD 画面(约 100ms 刷新)
- 右侧使用方向键、确认、复归、返回进行按键操作
- 点击「断开」断开与装置的连接
可选预连接:启动时传入 IP 可预连接装置,例如:
python remo_disp_server.py 192.168.253.3
3. 命令行工具
# 获取初始化信息(屏幕宽高、显存大小)
python remo_disp_client.py 192.168.1.100 --init
# 拉取显存并保存为 screen.png
python remo_disp_client.py 192.168.1.100 --screen
# 发送按键 (U/D/L/R/ENT/ESC/F1/F2)
python remo_disp_client.py 192.168.1.100 --key ENT
# 发送 KEEPLIVE
python remo_disp_client.py 192.168.1.100 --keepalive
# 指定端口
python remo_disp_client.py 192.168.1.100 -p 7003 --screen
4. GUI 查看器
python remo_disp_viewer.py 192.168.1.100
- 连接装置并实时显示 LCD 画面
- 点击按键模拟远程按键
- 点击「刷新」重新拉取显存
项目结构
DTU-RemoteLCD/
├── remo_disp_server.py # Web 服务(Flask + Socket.IO)
├── remo_disp_ui.html # Web 前端页面
├── remo_disp_client.py # 命令行客户端
├── remo_disp_viewer.py # Tkinter GUI 查看器
├── requirements.txt # Python 依赖
├── static/ # 静态资源(可选)
│ └── favicon.ico # 网站图标
└── README.md
协议说明(RemoDispBus)
与 HMI/RemoeDisp/RemoDispBus.c 兼容:
| 项目 | 说明 |
|---|---|
| 端口 | 7003 |
| 工具 → 装置 | [0xAA][功能码][长度高][长度低][数据...][CRC] |
| 装置 → 工具 | [0xBB][功能码][长度高][长度低][数据...][CRC] |
| CRC | 数据区逐字节异或,取低 8 位 |
功能码:
| 码 | 名称 | 说明 |
|---|---|---|
| 0 | KEEPLIVE | 保活 |
| 1 | INIT | 初始化,获取屏幕宽高、显存大小 |
| 2 | KEY | 按键 |
| 3 | LCDMEM | 读取显存(屏幕画面) |
按键映射
| 键名 | 协议码 | 说明 |
|---|---|---|
| U | 0x02 | 上 |
| D | 0x40 | 下 |
| L | 0x10 | 左 |
| R | 0x08 | 右 |
| ENT | 0x20 | 确认 |
| ESC | 0x01 | 返回/取消 |
| F1/RESET | 0x04 | 复归 |
| F2 | 0x80 | F2 |
依赖说明
| 依赖 | 用途 |
|---|---|
| Flask | Web 框架 |
| flask-socketio | WebSocket 支持 |
| python-socketio | Socket.IO 服务端 |
| Pillow | 1bpp 位图转 PNG |
remo_disp_client.py 仅需 Python 标准库;remo_disp_viewer.py 使用 Tkinter(Python 自带)。
配置说明
- Web 服务端口:默认 8181,在
remo_disp_server.py的main()中修改 - 装置端口:默认 7003,连接时可输入自定义端口
- Favicon:将
favicon.ico放入static/目录即可显示网站图标
许可证
本项目仅供内部调试使用。
Description
Languages
Python
59.1%
HTML
39.6%
Batchfile
1.3%