Android串口驱动开发

开发流程

  1. 串口底层驱动,如 /dev/ttyS3

  2. JNI层接口需要根据设备CPU架构类型编译,即在linux内核下使用相应的编译工具编译,注意C文件的接口命名规则需要与java程序包名保持一致,
    如 cn.ingenic.glass.serialport.SerialPort.open (java接口)
    Java_cn_ingenic_glass_serialport_SerialPort_open(JNI接口),
    其中JNI的接口,需要固定格式Java_xxx_xxx

  3. JNI生成的.so文件编译进去Andorid镜像,如libserial_port.so

  4. java程序使用时,需要加载xxx.so文件,如System.loadLibrary(“serial_port”);

  5. 使用时,要对驱动文件作权限管理,以便APK能操作,可在init.rc中设置驱动文件权限,
    如chmod 0666 /dev/ttyS3

注意事项

  1. 在System.loadLibrary这行的时候就会报 java.lang.UnsatisfiedLinkError: Couldn’t load secret: findLibrary returned null

产生原因1:加载库名错误
产生原因2:生成的库和运行平台不匹配,
解决办法:在jni文件夹下新建Application.mk文件其中指定 APP_ABI := all 生成所有支持平台的.so库

  1. so库可以加载,调用JNI接口时候报错

产生原因1:加载库名错误
解决办法:注意调用的JNI接口与JNI文件的命名是否一致

  1. so库可以加载,调用JNI接口也有效,但是在执行时候返回错误,如 fd open return null

产生原因1:APK在调用JNI层读写或执行底层驱动文件时,权限不够
解决办法:在root权限下,设置底层驱动文件权限为 0666,所有组可读写

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值