178 lines
5.4 KiB
Markdown
178 lines
5.4 KiB
Markdown
# ASR5515 Android 串口通信应用
|
||
|
||
## 项目概述
|
||
这是一个基于 Android 平台的串口通信应用,主要用于与 ASR5515 设备进行通信。该应用实现了完整的串口通信协议,支持设备管理、数据采集、状态监控等功能。同时,应用还集成了WiFi保活、蓝牙配网等网络功能,以确保设备的稳定连接。
|
||
|
||
## 主要功能
|
||
1. 串口通信
|
||
- 基于 Android SerialPort API 的串口通信实现
|
||
- 支持自定义波特率和串口配置
|
||
- 数据帧封装和解析
|
||
|
||
2. 设备管理
|
||
- 设备检测和状态查询
|
||
- 设备重启控制
|
||
- 固件版本管理
|
||
- 蓝牙模块管理
|
||
|
||
3. 数据采集
|
||
- 心率、血压、血氧自动测量
|
||
- 手动测量模式支持
|
||
- 动态测量功能
|
||
- 可配置的数据采集频率
|
||
|
||
4. 状态监控
|
||
- 设备佩戴检测
|
||
- 主机状态同步
|
||
- 日志控制功能
|
||
|
||
5. 网络功能
|
||
- WiFi保活机制,防止频繁断连
|
||
- 蓝牙配网功能
|
||
- 网络状态监控
|
||
|
||
## 技术架构
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[Android App] --> B[串口通信层]
|
||
A --> N[网络管理层]
|
||
B --> C[协议解析层]
|
||
C --> D[设备管理]
|
||
C --> E[数据采集]
|
||
C --> F[状态监控]
|
||
N --> O[WiFi保活]
|
||
N --> P[蓝牙配网]
|
||
|
||
B --> |SerialPortHelper| G[串口读写]
|
||
C --> |ASR5515Protocol| H[协议实现]
|
||
D --> |ASR5515DeviceManager| I[设备控制]
|
||
O --> |WiFiKeepAliveManager| J[WiFi锁管理]
|
||
```
|
||
|
||
## 核心模块
|
||
|
||
1. **SerialPortHelper**
|
||
- 串口通信的核心类
|
||
- 实现数据的发送和接收
|
||
- 管理通信线程和数据队列
|
||
|
||
2. **ASR5515Protocol**
|
||
- 实现 ASR5515 设备通信协议
|
||
- 定义命令集和数据格式
|
||
- 处理数据帧的封装和解析
|
||
|
||
3. **ASR5515DeviceManager**
|
||
- 设备信息查询
|
||
- 设备控制命令
|
||
- 固件升级支持
|
||
|
||
4. **WiFiKeepAliveManager**
|
||
- WiFi锁管理,防止WiFi频繁断连
|
||
- 网络状态监控
|
||
- 自动管理WiFi资源
|
||
|
||
5. **网络配置模块**
|
||
- 蓝牙配网功能
|
||
- 网络状态测试
|
||
- BSSID测试功能
|
||
|
||
## 通信协议
|
||
- 帧格式:`[命令字(2字节) + 序列号(2字节) + 长度(2字节) + 数据]`
|
||
- 支持的命令类型:
|
||
- 设备检查 (0x0065/0x0066)
|
||
- 设备重启 (0x0067/0x0068)
|
||
- 状态同步 (0x0079/0x007A)
|
||
- 数据采集 (0x00C9-0x00D0)
|
||
- 佩戴检测 (0x0105/0x0106)
|
||
|
||
## 开发环境
|
||
- Android Studio
|
||
- Java 11
|
||
- Gradle 构建系统
|
||
- Android SDK 34 (最低支持SDK 26)
|
||
|
||
## 依赖
|
||
- Android SerialPort API
|
||
- Android SDK
|
||
- OkHttp 网络库
|
||
- Aliyun Core
|
||
- FastJSON
|
||
- AndroidBootstrap UI库
|
||
- 阿里云视频云SDK
|
||
- 阿里云OSS存储
|
||
- 通义千问多模态对话SDK
|
||
|
||
## WiFi保活功能
|
||
应用实现了WiFi保活功能,通过Android的WifiLock机制保持WiFi连接稳定:
|
||
|
||
1. **核心实现**:WiFiKeepAliveManager类管理WifiLock生命周期
|
||
2. **网络监控**:通过NetworkStateMonitor监听网络状态变化
|
||
3. **自动管理**:WiFi连接时自动获取锁,断开时释放锁
|
||
4. **资源优化**:合理管理资源,避免不必要的电量消耗
|
||
|
||
## 项目结构
|
||
```
|
||
├── app/ # 应用主模块
|
||
│ ├── src/ # 源代码目录
|
||
│ │ ├── main/ # 主要源代码
|
||
│ │ │ ├── java/ # Java源代码
|
||
│ │ │ │ ├── com/ismart/ib86/ # 主包
|
||
│ │ │ │ │ ├── app/ # 应用入口
|
||
│ │ │ │ │ ├── common/ # 通用组件
|
||
│ │ │ │ │ ├── feature/ # 功能模块
|
||
│ │ │ │ │ │ ├── gpio/ # GPIO功能
|
||
│ │ │ │ │ │ ├── motor/ # 电机控制
|
||
│ │ │ │ │ │ ├── network/ # 网络功能
|
||
│ │ │ │ │ │ ├── serial/ # 串口通信
|
||
│ │ │ │ │ ├── robotFace/ # 机器人表情
|
||
│ │ │ │ │ ├── view/ # 视图组件
|
||
│ │ │ ├── res/ # 资源文件
|
||
│ │ │ ├── assets/ # 资源文件
|
||
│ │ │ ├── libs/ # 本地依赖库
|
||
│ │ ├── test/ # 单元测试
|
||
│ ├── libs/ # 依赖库
|
||
│ └── build.gradle # 模块构建配置
|
||
├── gradle/ # Gradle配置
|
||
├── docs/ # ASR通信协议等文档资料
|
||
├── build.gradle # 项目构建配置
|
||
└── settings.gradle # 项目设置
|
||
```
|
||
|
||
## 构建与安装
|
||
1. 克隆仓库
|
||
```bash
|
||
git clone <仓库地址>
|
||
cd robot/app
|
||
```
|
||
|
||
2. 使用Gradle构建
|
||
```bash
|
||
./gradlew assembleDebug # Linux/Mac
|
||
gradlew.bat assembleDebug # Windows
|
||
```
|
||
|
||
3. 安装APK
|
||
```bash
|
||
adb install app/build/outputs/apk/debug/app-debug.apk
|
||
```
|
||
|
||
## 权限需求
|
||
应用需要以下权限:
|
||
- 存储读写权限
|
||
- 网络访问权限
|
||
- 蓝牙权限(包括BLE)
|
||
- WiFi状态访问和修改权限
|
||
- 位置权限(用于蓝牙配网)
|
||
- 录音权限
|
||
- 系统弹窗权限
|
||
|
||
## 许可证
|
||
本项目采用MIT许可证 - 详见LICENSE文件。
|
||
|
||
## 贡献指南
|
||
1. Fork本仓库
|
||
2. 创建特性分支 (`git checkout -b feature/amazing-feature`)
|
||
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
|
||
4. 推送到分支 (`git push origin feature/amazing-feature`)
|
||
5. 打开Pull Request |