阅读:3840回复:2
java访问串口的API
参考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中的类和变量不能混淆 |
|
最新喜欢:zhaoyf... |
沙发#
发布于:2021-08-20 11:03
不明觉厉
|
|
|