阅读:3840回复:2

java访问串口的API

楼主#
更多 发布于:2021-08-19 22:24
参考https://github.com/cepr/android-serialport-api
基本架构就是Native提供设备文件的open, close接口,Java API使用InputStream/OutputStream提供open/close/read/write接口
方便客户开发,在平台中生成lib.so,集成到系统中,把API封闭成jar包,开放给客户。

几个问题:
1. adb下打开串口前需要设置波特率:stty -F /dev/ttyS1 raw speed 9600,设置相同的波特率,然后才能用echo/cat命令进行读写
2. 简单调试方法:把串口的RX和TX短接,方便查看数据的收发
2. API中使用while循环读数据,实际操作发现,很难读到正确的数据,不完整或者读不到,参考:https://blog.csdn.net/lilidejing/article/details/37913627 byte[] b= new byte[1024];
while(...) {
...
        int count = 0;
     if(inputStream.available()>0 == false){
      continue;
     }else{
      Thread.sleep(200);//可根据实际情况调整延时
      }
     count = inputStream.read(b);
...
}
3. InputStream/OutputStream使用的是byte[]传递,要进行string-hex-byte转换
4. JNI makefile:
关键:
LOCAL_ARM_MODE := arm
include $(BUILD_SHARED_LIBRARY)
5. JAR makefile:

关键:include $(BUILD_STATIC_JAVA_LIBRARY)
jar生成目录:
out/target/product/marconi/obj/JAVA_LIBRARIES/UartSDK_intermediates/javalib.jar
重命名,放到AS的libs目录
配置gradle:
implementation files('libs\\UartSDK.jar')
proguard要配置Jar中的类和变量不能混淆

最新喜欢:

zhaoyf13zhaoyf...
沙发#
发布于:2021-08-20 11:03
不明觉厉
[url]http://190.lsal.cn/195/1329.gif?0728100424873[/url]
板凳#
发布于:2021-08-20 11:08
zhaoyf13:不明觉厉回到原帖
一起学习,共同进步
游客

返回顶部