# SerialAssistant **Repository Path**: jameslan520/serial-assistant ## Basic Information - **Project Name**: SerialAssistant - **Description**: 串口调试助手 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 22 - **Created**: 2026-09-12 - **Last Updated**: 2026-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SerialAssistant Android 串口调试助手 —— **内置串口 + USB 串口二合一**。既支持通过 JNI 调用 `/dev/tty` 内置串口(面向 PDA、工控机等工业设备),也支持 USB 转串口模块(普通 Android 手机插上即可用),支持数据收发、指令保存、定时循环发送。 ## 功能特性 - 自动搜索本机串口设备(内置串口 + USB 设备统一列出) - 支持 USB 转串口模块热插拔自动识别(插上即刷新、拔出即断开) - 支持配置波特率、数据位、停止位、奇偶校验位 - 收发模式可选 TXT 或 HEX - 收发分色显示(接收蓝色 / 发送红色) - 接收区 RecyclerView + 环形缓冲,高频收发不卡顿 - 多发送框,避免反复输入 - 定时自动多条循环发送 - 常用指令保存,一键载入 - 收发数据记录保存与查看 ## 架构 单仓库多 Module: ``` serial-assistant/ ├── app/ # 壳应用(UI + 资源) ├── core-serial/ # 公共层:ISerialHelper 接口 + AbstractSerialHelper + entity/db/utils ├── driver-tty/ # 内置串口:SerialPort + JNI .so + TtySerialHelper └── driver-usb/ # USB 串口:UsbSerialHelper(usb-serial-for-android) ``` 驱动层通过 `ISerialHelper` 接口统一抽象,内置串口与 USB 串口共用同一套发送/循环发送/日志逻辑。 ## 技术栈 | 类别 | 技术 | |---|---| | 语言 | Kotlin(JNI 层保留 C/Java) | | 串口层 | JNI + C(`/dev/tty` 系列) | | USB 串口 | usb-serial-for-android v3.9.0(开源,MIT 协议) | | 数据库 | Room 2.5.2 | | 并发 | Kotlin Coroutines 1.7.3 | | 架构 | MVVM(ViewModel + StateFlow/SharedFlow) | | UI | AndroidX + Material Design + viewBinding | | KV 存储 | MMKV | | 权限管理 | RxPermissions | ## 环境要求 - Android Studio Hedgehog+(自带 JDK 11+) - Gradle 8.2(项目自带 wrapper,无需单独安装) - AGP 8.2.2 / compileSdk 34 / minSdk 21 / targetSdk 34 ## 编译运行 ```bash git clone https://gitee.com/liang-fu/serial-assistant.git ``` 1. Android Studio 打开项目根目录,等待 Gradle 同步 2. 连接设备(普通手机插 USB 转串口模块,或自带串口的工业设备) 3. 点击 Run ## 使用说明 1. 打开 App,自动扫描串口设备,串口号下拉框选择目标设备 2. 选择波特率(默认 9600),如需调整校验位/数据位/停止位点「高级设置」 3. 打开右侧开关,串口即连接,接收区开始实时显示数据 4. 发送:输入框填内容 → 切换 HEX/TXT 模式 → 点发送按钮 5. 循环发送:勾选指令 + 设置间隔 → 开启循环发送 6. 常用指令:点「导入指令」保存/载入 ## 更新日志 ### 2.0.1(2026-09) - 内置串口 + USB 串口二合一,普通手机插 USB 转串口模块即可用 - 支持 USB 热插拔自动识别 - 全量 Java → Kotlin + viewBinding - greenDAO → Room,协程化异步 - MVVM 架构(ViewModel + StateFlow/SharedFlow) - 接收区改 RecyclerView + 环形缓冲 + 收发分色 - 抽取 AbstractSerialHelper 基类,消除驱动层重复代码 - AGP 7.4.2 → 8.2.2,Gradle 7.5.1 → 8.2 - 修复 Hex 奇数位截断、Android 14 USB 权限广播崩溃、发送线程泄漏 ### 1.2.1(2026-09) - 工具链升级(AGP 4.1 → 7.4.2,compileSdk 30 → 34) - 移除 Bugly SDK 及过度权限(READ_PHONE_STATE / READ_LOGS) - jcenter → mavenCentral - SerialPortFinder NPE 防护 ## 相关项目 - [SerialAssistantForUSB](https://gitee.com/liang-fu/serial-assistant-for-usb) — USB OTG 外接串口版本 - [flutter_serial_port_api](https://gitee.com/liang-fu/flutter_serial_port_api) — Flutter 串口通信插件 ## 开源协议 本项目采用 [GNU General Public License v3.0 (GPL 3.0)](LICENSE)。