# serial-bridge-app **Repository Path**: DragDouDou/serial-bridge-app ## Basic Information - **Project Name**: serial-bridge-app - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-22 - **Last Updated**: 2026-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: 串口桥接 ## README # 串口桥接 App (Serial Bridge) USB 串口 → WebSocket 桥接工具。让网页应用通过 WebSocket 与串口设备通信,解决鸿蒙系统浏览器不支持 Web Serial API 的问题。 ## 架构 ``` [USB 串口设备] <--USB--> [安卓App: SerialBridgeService] <--WebSocket--> [网页应用] (原生 USB Host API) (localhost:8899) ``` ## 编译步骤 1. 用 Android Studio 打开 `serial-bridge-app` 文件夹 2. 等待 Gradle 同步完成(会自动下载依赖) 3. 连接手机,点击 Run 编译安装 ## 使用方法 ### 1. 启动桥接服务 - 打开 App,点击"启动服务" - 插入 USB 串口设备(CP2102),弹出权限对话框时点允许 - 状态栏会显示"串口已连接" ### 2. 网页端连接 在浏览器中连接 `ws://localhost:8899`,参考 `web-client/bridge-test.html` 测试页面。 ## WebSocket 协议 ### 网页 → App(发送指令) | 类型 | JSON 格式 | 说明 | |------|-----------|------| | 发送文本 | `{"type":"send", "data":"AT\r\n"}` | 发送文本到串口 | | 发送HEX | `{"type":"sendHex", "data":"AA BB 01"}` | 发送十六进制数据 | | 配置参数 | `{"type":"config", "baudRate":115200}` | 修改波特率等参数 | | 打开串口 | `{"type":"open"}` | 重新尝试连接串口 | | 关闭串口 | `{"type":"close"}` | 关闭串口连接 | ### App → 网页(接收数据) | 类型 | JSON 格式 | 说明 | |------|-----------|------| | 文本数据 | `{"type":"data", "data":"..."}` | 串口收到的文本 | | HEX数据 | `{"type":"hex", "data":"AA BB CC"}` | 串口收到的十六进制 | | 状态变更 | `{"type":"status", "connected":true, "baudRate":115200}` | 串口状态 | | 错误 | `{"type":"error", "message":"..."}` | 错误信息 | | 日志 | `{"type":"log", "message":"..."}` | App 运行日志 | ## 文件结构 ``` serial-bridge-app/ ├── build.gradle # 项目级 Gradle 配置 ├── settings.gradle # Gradle 设置 ├── gradle.properties ├── app/ │ ├── build.gradle # App 级 Gradle 配置(含依赖) │ ├── proguard-rules.pro │ └── src/main/ │ ├── AndroidManifest.xml │ ├── java/com/serialbridge/ │ │ ├── MainActivity.java # 主界面:启动/停止服务 │ │ └── SerialBridgeService.java # 核心服务:USB串口 + WebSocket │ └── res/ │ ├── layout/activity_main.xml │ ├── values/colors.xml │ ├── values/strings.xml │ └── xml/device_filter.xml # USB 设备过滤器 └── web-client/ ├── SerialBridgeClient.js # JS 客户端库(嵌入网页使用) └── bridge-test.html # 测试页面 ``` ## 网页端集成示例 ```javascript // 引入 SerialBridgeClient.js const serial = new SerialBridgeClient(); // 连接桥接服务 await serial.connect(); // 监听数据 serial.onData(data => console.log('收到:', data)); // 发送数据 await serial.send('Hello\r\n'); await serial.sendHex('AA BB CC'); // 修改波特率 await serial.configure({ baudRate: 9600 }); ``` ## 依赖 - [usb-serial-for-android](https://github.com/mik3y/usb-serial-for-android) - USB 串口驱动库 - [Java-WebSocket](https://github.com/TooTallNate/Java-WebSocket) - WebSocket 服务端库 ## 支持的串口芯片 - CP2102 / CP2104 (Silicon Labs) - CH340 / CH341 (南京沁恒) - FT232R / FT232H (FTDI) - PL2303 (Prolific) - CDC/ACM 类设备