最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述android串口调试相关的知识,希望能为你提供帮助。
在androidstudio调试安卓串口的一个demo工程,第一次接触安卓串口,记录一下调试过程的坑。
工程来自github,https://github.com/jp1017/AndroidSerialPort
首先,需要编译出串口的so。
打开工程,在AndroidSerialPort-master\\app\\src\\main\\jni可以看到源代码SerialPort.c。电脑已经配置过ndk的话,打开cmd,cd到这个文件夹,运行ndk-build就可以编译出so。
需要注意的是,SerialPort.c中函数的包名需要和你的android工程的包名一致。
android工程:
文章图片
SerialPort.c:
文章图片
编译:
文章图片
直接这样编译的话,在api大于19的时候可能会出现tcsetattr failed,需要替换termios.h。下载新的termios.h放入jni目录,修改SerialPort.c中#include < termios.h> ---> include "termios.h",再编译。
app目录下,新建一个libs目录,libs内新建armeabi目录,编译得到的so放在armeabi目录。安卓工程的build.grandle修改如下:
apply plugin: \'com.android.application\'
android {
compileSdkVersion 23
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.android.serialport"
minSdkVersion 15
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(\'proguard-android.txt\'), \'proguard-rules.txt\'
}
}
sourceSets {
main {
jniLibs.srcDirs = [\'libs\']
}
}
compileOptions {
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
//自定义apk安装包名
android.applicationVariants.all {
variant ->
variant.outputs.all {
//这里修改apk文件名
outputFileName = "AndroidSerial.apk"
}
}
}
dependencies {
//noinspection GradleCompatible
implementation \'com.android.support:appcompat-v7:23.4.0\'
implementation files(\'libs/portlibrary.jar\')
}
其次,编译得到apk,使用模拟器和虚拟串口测试。
成功编译得到apk后,使用Androidstudio的模拟器测试。开启AVD,创建一个模拟器。
文章图片
文章图片
创建模拟器后,在cmd中打开。
文章图片
这里的emulator是你Androidstudio下的,我电脑还装了其他sdk,一开始路径搞错了,死活打不开。电脑的环境变量也要相应配置好。
文章图片
使用虚拟串口工具进行调试,Configure Virtual Serial Port Driver.exe ,虚拟出两个串口连通,比如COM1和COM2。
文章图片
打开串口调试工具,在Androidstudio启动调试。
需要注意的是,模拟器的串口需要测试具体是哪个,一般情况下是ttyS1,在代码进行相应修改。
cmd中执行adb root,adb shell,cd dev,ls tty* 查看可能的口。
在api大于19时,还需要执行setenforce 0,否则无法访问串口。
文章图片
【android串口调试】
最后,使用真机进行串口调试。
先将真机连接wifi,和电脑在局域网中。usb线连到电脑,执行adb connect ip:5555。ip通过真机进行查看,此后拔掉线也可以执行adb shell。
需要将真机root,然后设备使用转接口和真机连接,真机使用wifi和电脑连接,在电脑上查看dev下是否检测到设备的串口。代码中将串口改为设备的串口,就可以实现真机和设备的串口调试了。
参考:
https://github.com/jp1017/AndroidSerialPort
https://blog.csdn.net/gd6321374/article/details/74779770
https://www.jianshu.com/p/e5004d75bd9c
https://blog.csdn.net/gezi322/article/details/91861337
https://blog.csdn.net/qq_29389373/article/details/84964259
推荐阅读
- 上传appstore报错: An error occurred uploading to the App Store.
- @RequestMapping和@GetMapping区别
- 玩安卓缺陷报告
- 《APP》团队冲刺二第二阶段一
- 《APP》团队冲刺第二阶段二
- Android 开发学习进程0.11
- Ruby on Rails CRUD操作图解
- Rails脚本工具使用介绍
- Ruby on Rails RVM版本管理用法