2025-09-16 16:58:40 +08:00
|
|
|
|
# Dashboard Client
|
2024-03-16 13:23:52 +08:00
|
|
|
|
|
2025-09-16 16:58:40 +08:00
|
|
|
|
## 1. 简介
|
2025-04-03 11:12:26 +08:00
|
|
|
|
|
2025-10-10 15:42:24 +08:00
|
|
|
|
本项目是一个运行在 Android 设备上的仪表盘(Dashboard)客户端。
|
2025-04-03 11:12:26 +08:00
|
|
|
|
|
2025-10-10 15:42:24 +08:00
|
|
|
|
其主要功能是作为一个**仪表盘(Dashboard)**的展示端:它通过全屏 `WebView` 加载并展示一个远程的网页仪表盘,并根据服务器数据的配置,在预定的时间通过串口与外部硬件设备进行通信。
|
2025-04-03 11:12:26 +08:00
|
|
|
|
|
2025-09-16 16:58:40 +08:00
|
|
|
|
## 2. 主要功能
|
2025-04-03 11:12:26 +08:00
|
|
|
|
|
2025-09-16 16:58:40 +08:00
|
|
|
|
* **网页仪表盘展示**:通过 `WebView` 全屏展示一个可配置的远程 URL。
|
|
|
|
|
|
* **远程配置**:应用会定期从服务器获取 `config.json` 文件,动态更新其行为。
|
|
|
|
|
|
* **定时串口指令**:根据 `config.json` 中的计划,使用 `AlarmManager` 在精确的时间点发送十六进制(Hex)串口指令。
|
|
|
|
|
|
* **开机自启**:设备启动后,应用会自动运行。
|
|
|
|
|
|
* **网络重试机制**:当加载仪表盘主页失败时,应用会自动进行延时重试。
|
2025-04-03 11:12:26 +08:00
|
|
|
|
|
2025-09-16 16:58:40 +08:00
|
|
|
|
## 3. 工作流程
|
|
|
|
|
|
|
|
|
|
|
|
1. **启动**:应用启动后,进入全屏模式并加载在设置中配置的远程网页 URL。
|
|
|
|
|
|
2. **加载配置**:应用会定期从服务器的 `/data/config.json` 路径下拉取配置文件。
|
|
|
|
|
|
3. **解析与调度**:解析 `config.json` 中定义的串口设备路径、波特率以及多个定时指令。
|
|
|
|
|
|
4. **设置定时任务**:使用 Android 的 `AlarmManager` 为每一条指令安排一个在未来特定时间触发的广播。
|
|
|
|
|
|
5. **执行指令**:当预定时间到达,`CommandBroadcastReceiver` 被唤醒,并通过 `SerialControlDevices` 类向指定的串口发送 Hex 指令。
|
|
|
|
|
|
|
|
|
|
|
|
## 4. 配置
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 仪表盘 URL
|
|
|
|
|
|
|
|
|
|
|
|
在应用的设置界面中,可以配置仪表盘的主 URL,例如 `http://192.168.1.100:8000/Dashboard`。应用会自动加载该 URL 下的 `index.html`。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 串口指令 (config.json)
|
|
|
|
|
|
|
|
|
|
|
|
应用会从 `[主 URL]/data/config.json` 加载串口指令。`config.json` 的格式如下:
|
|
|
|
|
|
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"DevicePath": "/dev/ttyS2",
|
|
|
|
|
|
"Baud": 9600,
|
|
|
|
|
|
"Commands": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"Time": "08:00",
|
|
|
|
|
|
"Hex": "AABB0101CCDD"
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"Time": "18:00",
|
|
|
|
|
|
"Hex": "AABB0100CCDD"
|
|
|
|
|
|
}
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
* `DevicePath`: 串口设备节点路径。
|
|
|
|
|
|
* `Baud`: 串口通信的波特率。
|
|
|
|
|
|
* `Commands`: 一个指令数组,包含多个定时任务。
|
|
|
|
|
|
* `Time`: 指令每天执行的时间(24小时制)。
|
|
|
|
|
|
* `Hex`: 需要发送的十六进制指令字符串。
|
|
|
|
|
|
|
|
|
|
|
|
## 5. 如何构建
|
|
|
|
|
|
|
|
|
|
|
|
这是一个标准的 Android Gradle 项目。使用 Android Studio 打开即可,或在命令行中执行以下命令构建:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-10-10 15:42:24 +08:00
|
|
|
|
# 构建 Release 版本的 APK
|
|
|
|
|
|
./gradlew clean assembleRelease
|
2025-09-16 16:58:40 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 6. TODO
|
|
|
|
|
|
|
|
|
|
|
|
* [ ] 恢复并优化图片轮播功能,支持本地与网络图片。
|
|
|
|
|
|
* [ ] 提供更丰富的远程配置选项(如轮播间隔、动画效果等)。
|
2025-10-10 15:42:24 +08:00
|
|
|
|
* [ ] 增加 Web 与客户端通过 Javascript Interface 的双向交互。
|