This repository has been archived on 2026-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
Files
DashboardClient/readme.md
2026-03-12 15:33:49 +08:00

69 lines
2.7 KiB
Markdown
Raw Permalink 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.

# Dashboard Client
## 1. 简介
本项目是一个运行在 Android 设备上的仪表盘Dashboard客户端。
其主要功能是作为一个**仪表盘Dashboard**的展示端:它通过全屏 `WebView` 加载并展示一个远程的网页仪表盘,并根据服务器数据的配置,在预定的时间通过串口与外部硬件设备进行通信。
## 2. 主要功能
* **网页仪表盘展示**:通过 `WebView` 全屏展示一个可配置的远程 URL。
* **远程配置**:应用会定期从服务器获取 `config.json` 文件,动态更新其行为。
* **定时串口指令**:根据 `config.json` 中的计划,使用 `AlarmManager` 在精确的时间点发送十六进制Hex串口指令。
* **开机自启**:设备启动后,应用会自动运行。
* **网络重试机制**:当加载仪表盘主页失败时,应用会自动进行延时重试。
## 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
{
"Commands": [
{
"Time": "08:00",
"Hex": "AABB0101CCDD"
},
{
"Time": "18:00",
"Hex": "AABB0100CCDD"
}
]
}
```
* `DevicePath`: 串口设备节点路径。
* `Baud`: 串口通信的波特率。
* `Commands`: 一个指令数组,包含多个定时任务。
* `Time`: 指令每天执行的时间24小时制
* `Hex`: 需要发送的十六进制指令字符串。
## 5. 如何构建
这是一个标准的 Android Gradle 项目。使用 Android Studio 打开即可,或在命令行中执行以下命令构建:
```bash
# 构建 Release 版本的 APK
./gradlew clean assembleRelease
```
## 6. TODO
* [ ] 恢复并优化图片轮播功能,支持本地与网络图片。
* [ ] 提供更丰富的远程配置选项(如轮播间隔、动画效果等)。
* [ ] 增加 Web 与客户端通过 Javascript Interface 的双向交互。