Android 串口打开失败几种原因及解决办法

Posted Ang_qq_252390816

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 串口打开失败几种原因及解决办法相关的知识,希望对你有一定的参考价值。

目录

前言

串口打开失败目前遇到以下几种问题:

第一个问题

第二个问题

第三个问题


前言

android串口通信一般都是基于Google开源库的,然后在此基础上进行一系列操作的,比如打开串口,通过串口写数据,通过串口读数据,关闭串口;

Google串口库

串口调试工具(需要翻墙)

https://code.google.com/archive/p/android-serialport-api/downloads

串口调试库源码(需要翻墙)

https://code.google.com/archive/p/android-serialport-api/source/default/source

工具首页显示如下

 

串口打开失败目前遇到以下几种问题:

第一个问题

问题:点击Setup闪退,如果是NullPointerException异常,主要是获取dev目录下的设备号为空;或者说获取的设备号数组为空;获取不到串口号;

可能引起的原因:Android系统防火墙打开了,所以需要关闭;具体步骤如下

解决方法: 

a,cmd 中输入adb root 获取root权限

b,adb remount (有的不需要执行这条命令)

c,adb shell

d,setenforce 0 关闭防火墙(注意:重启后失效,需重新设置)

e,getenforce 查看当前权限状态

第二个问题

问题:执行Runtime.getRuntime().exec("/system/xbin/su")或者Runtime.getRuntime().exec("/system/bin/su")获取Process为null抛出SecurityException异常

这里主要是获取su权限然后修改串口号文件的读写权限;

但是使用Runtime.getRuntime().exec("/system/xbin/su")获取su权限(文件),在5.1系统以上版本不能使用了,所以获取的Process为null;

解决方法:

1,让板子厂家把串口权限放开。

2,如果有root权限,可以使用adb 修改串口的读写权限;

    2.1,adb root 获取root权限

    2.2,adb shell

    2.3,cd dev

    2.4,chmod 777 tty* (可以指定具体的串口号,tty*是把所有的tty开头的文件权限全部设置为可读可写)

第三个问题

如果没有执行第二个问题的代码,直接调用open方法( private native static FileDescriptor open(String path, int baudrate, int flags) ;)获取FileDescriptor为null;解决办法和二相同;

总结

执行一和二的解决办法,一般就能解决串口打开失败的问题;

 

如果能帮到你,麻烦加个关注,您的支持,是我最大的动力!

 

以上是关于Android 串口打开失败几种原因及解决办法的主要内容,如果未能解决你的问题,请参考以下文章

系统启动失败的原因分析及解决办法

Android开发常见的Activity中内存泄漏及解决办法

Android开发常见的Activity中内存泄漏及解决办法

Android ANR原因及解决办法

Mac 切换JDK版本及RN-android jdk版本问题导致编译失败解决

死锁的原因及解决方法 死锁的原因及解决办法