Files
DTU-RemtoeLCD/README.md

139 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DTU-RemoteLCD - 远程显示通信工具
**RemoDispBus** 协议兼容的远程 LCD 显示与按键模拟工具。通过网络连接 DTU 装置,实时查看 LCD 显存画面并模拟按键操作,适用于调试、监控等场景。
## 功能特性
- **实时屏幕显示**:将装置 LCD 显存以 1bpp 位图形式拉取并渲染
- **按键模拟**:支持方向键、确认、返回、复归等按键
- **多种使用方式**命令行、GUI、Web 浏览器
- **WebSocket 传输**Web 版采用 Socket.IO服务端主动推送低延迟
## 环境要求
- Python 3.7+
- 与 DTU 装置网络互通(默认端口 7003
## 快速开始
### 1. 安装依赖
```bash
pip install -r requirements.txt
```
### 2. Web 界面(推荐)
```bash
python remo_disp_server.py [装置IP]
```
启动后访问 **http://localhost:8181**,在页面中:
- 点击「连接」→ 输入装置 IP 和端口(默认 7003→ 连接
- 左侧显示装置 LCD 画面(约 100ms 刷新)
- 右侧使用方向键、确认、复归、返回进行按键操作
- 点击「断开」断开与装置的连接
**可选预连接**:启动时传入 IP 可预连接装置,例如:
```bash
python remo_disp_server.py 192.168.253.3
```
### 3. 命令行工具
```bash
# 获取初始化信息(屏幕宽高、显存大小)
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 查看器
```bash
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` 使用 TkinterPython 自带)。
## 配置说明
- **Web 服务端口**:默认 8181`remo_disp_server.py``main()` 中修改
- **装置端口**:默认 7003连接时可输入自定义端口
- **Favicon**:将 `favicon.ico` 放入 `static/` 目录即可显示网站图标
## 许可证
本项目仅供内部调试使用。