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,否則無法訪問串口。 

 

 

最后,使用真機進行串口調試。

先將真機連接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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM