news 2026/4/15 13:22:10

Android串口通信 串口开发 serialport 多串口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Android串口通信 串口开发 serialport 多串口

在 Android 上进行串口通信,通常使用 **android-serialport-api**(基于 JNI 访问 Linux TTY 设备)。对于多串口场景,核心思路是**为每个串口独立维护一个 `SerialPort` 实例**,并分别管理各自的输入/输出流及读取线程。

下面给出完整的多串口开发方案,包括依赖配置、权限处理、打开多个串口、同时读写,以及注意事项。

一、准备工作

 1. 添加依赖

使用社区维护的 `Android-SerialPort-API`(支持多串口、参数配置、已编译好 .so):

```groovy
dependencies {
    implementation 'com.github.licheedev:Android-SerialPort-API:2.0.0'
}
```

或在 `libs` 中放置 `serialport.jar` 并自行编译 `libserial_port.so`(原 google 方案)。

2. 权限与设备节点

- 应用需要 **读写串口设备节点** 的权限(如 `/dev/ttyS0`, `/dev/ttyUSB0` 等)。
- 通常需要 **root** 设备,或修改 `ueventd.rc` 赋予 `0666` 权限,或使用 `su` 动态授权。
- 在 `AndroidManifest.xml` 中声明权限(即使 root 也需要):
```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
```
但对于串口节点,普通权限不够,实际需要通过 `Runtime.exec("su")` 更改节点权限或直接以 root 运行应用。

 3. 检查串口设备

列出 `/dev` 下的串口节点:
```bash
ls /dev/tty*   /dev/ttyS*   /dev/ttyUSB*
```
通常在开发板或工业平板中串口为 `ttyS0`, `ttyS1`;USB 转串口为 `ttyUSB0` 等。

二、核心代码实现

1. 串口参数配置类

```kotlin
data class SerialParam(
    val path: String,       // 如 "/dev/ttyS0"
    val baudRate: Int,      // 9600, 115200...
    val dataBits: Int = 8,  // 5~8
    val stopBits: Int = 1,  // 1 or 2
    val parity: Int = 0     // 0:NONE, 1:ODD, 2:EVEN
)
```

2. 打开串口并获取输入/输出流

```kotlin
import android_serialport_api.SerialPort

class SerialManager(private val param: SerialParam) {
    private var serialPort: SerialPort? = null
    private var inputStream: FileInputStream? = null
    private var outputStream: FileOutputStream? = null
    private var readingThread:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:22:10

embedded-hal 错误处理最佳实践:从基础模式到高级策略

embedded-hal 错误处理最佳实践&#xff1a;从基础模式到高级策略 【免费下载链接】embedded-hal A Hardware Abstraction Layer (HAL) for embedded systems 项目地址: https://gitcode.com/gh_mirrors/em/embedded-hal 在嵌入式系统开发中&#xff0c;错误处理是确保系…

作者头像 李华
网站建设 2026/4/15 13:21:10

Simulink延迟触发模块实战:从信号检测到计时器应用

1. Simulink延迟触发模块的核心应用场景 在工业自动化和嵌入式系统开发中&#xff0c;延迟触发功能就像是个智能的"时间守门员"。我做过一个机器人控制项目&#xff0c;需要检测传感器信号稳定持续2秒后才允许执行动作&#xff0c;这个场景就是典型的延迟触发应用。S…

作者头像 李华
网站建设 2026/4/15 13:16:45

React Native Permissions最佳实践:避免常见陷阱的完整清单

React Native Permissions最佳实践&#xff1a;避免常见陷阱的完整清单 【免费下载链接】react-native-permissions An unified permissions API for React Native on iOS, Android and Windows. 项目地址: https://gitcode.com/gh_mirrors/re/react-native-permissions …

作者头像 李华
网站建设 2026/4/15 13:16:07

图形学进阶|时间抗锯齿(TAA)实战解析

1. 时间抗锯齿&#xff08;TAA&#xff09;的核心原理 当你第一次在游戏中开启TAA时&#xff0c;可能会觉得画面突然变得"柔和"了。这不是错觉&#xff0c;而是TAA正在发挥它的魔法。想象一下&#xff0c;你正在用手机拍摄高速旋转的电风扇叶片。单张照片里叶片边缘会…

作者头像 李华
网站建设 2026/4/15 13:16:05

用C#和Halcon搞定3D线激光相机:深度图、亮度图、点云图采集与转换全流程

C#与Halcon实战&#xff1a;3D线激光相机数据采集与处理全流程精解 工业视觉领域的技术迭代正在加速&#xff0c;3D线激光相机凭借其毫米级测量精度和稳定的环境适应性&#xff0c;已成为智能制造中不可或缺的感知设备。本文将深入探讨如何基于C#和Halcon构建完整的3D视觉处理框…

作者头像 李华
网站建设 2026/4/15 13:12:10

基于VTubeStudio API的虚拟主播交互开发方法论

基于VTubeStudio API的虚拟主播交互开发方法论 【免费下载链接】VTubeStudio VTube Studio API Development Page 项目地址: https://gitcode.com/gh_mirrors/vt/VTubeStudio VTubeStudio作为专业的2D虚拟主播制作工具&#xff0c;通过其公开API为开发者提供了丰富的交互…

作者头像 李华