zoukankan      html  css  js  c++  java
  • android串口调试

    在Androidstudio调试安卓串口的一个demo工程,第一次接触安卓串口,记录一下调试过程的坑。

    工程来自github,https://github.com/jp1017/AndroidSerialPort

    首先,需要编译出串口的so。

    打开工程,在AndroidSerialPort-masterappsrcmainjni可以看到源代码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,否则无法访问串口。 

    最后,使用真机进行串口调试。

    先将真机连接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

  • 相关阅读:
    【BZOJ 3309】DZY Loves Math
    【51Nod 1239】欧拉函数之和
    【51Nod 1244】莫比乌斯函数之和
    莫比乌斯反演与杜教筛
    【BZOJ 3993】【SDOI 2015】星际战争
    【BZOJ 3876】【AHOI 2014】支线剧情
    【hihoCoder 1454】【hiho挑战赛25】【坑】Rikka with Tree II
    【BZOJ 1061】【Vijos 1825】【NOI 2008】志愿者招募
    【BZOJ 1016】【JSOI 2008】最小生成树计数
    【BZOJ 1005】【HNOI 2008】明明的烦恼
  • 原文地址:https://www.cnblogs.com/linguinost/p/13030283.html
Copyright © 2011-2022 走看看