本人最近刚开始学习android,学习大概将近一个月。学着学着突然想做个小东西出来。因为android前面的学习主要是UI
界面的学习,就想着做一个通信的串口 来实现app与外部的数据传输。通过界面的控制来实现串口数据的收发和接受。
一 android_serial_api的配置
1 首先是准备工作,需要配置串口的api ,这个东西别人已经都打包好了 ,我们只需要将api里面的文件配置赋值过来就好了
下载链接:android_serial_api
然后按照下图将api中的文件复制到相应位置 注意各个文件的包含关系 不要放错了
注意:SerialPort类是咱们Android可以调用的类,很重要的一点强调 如果你的设备里面su 的位置不在“system/xbin/su”中的话
请记得在这个类里面修改xbin为bin (应该在这两个其中一个)
jni目录下放着c源码和h头文件,
jniLibs下面放的就是so库。
因为用的谷歌原生so库,所以SerialPort类的包名一定要是android_serialport_api,如果想修改这个包名,就需要重新生成对应的so库
(其实API文件里面还有个SerialPortFinder.java文件 这个文件是当你不知道设备的具体串口号时 要用到的 我们这里一直开发板的串口设置为ttSAC3 所以用不到)
2、在src 下的build.gradle中添加如下代码:
sourceSets {
main { jni.srcDirs = [] }
}
ndk {
abiFilters “armeabi”, “armeabi-v7a”, “x86”, “mips”
}
至此 串口开发环境的配置已经好了
二 .接下来就会Activity类的编写了
首先我们需要知道大概步骤
1.设置波特率 串口号
2 获取串口对象 打开串口
3 发送数据
4 接受数据
我就用了一个mainActivity类来编写这个
1.获取串口对象 以及设置波特率
//获取串口对象
private SerialPort getSerialPort() {
if (serialPort == null) {
String path = "/dev/ttySAC3";//先确定你的设备的串口号 一定要找准 不然很容易闪退
try {
serialPort = new SerialPort(new File(path), baudrate, 0);//baudrate 在前面已经设置为9600;
} catch (IOException e) {
e.printStackTrace();
}
}
return serialPort;
}
这里首先是通过API 里面的SerialPort类来定义了一个串口对象 通过设置固定的串口号和 波特率来获取串口对象
2 连接串口
//连接串口
public void connect(View view) {
view.setClickable(false);//按下连接按钮后这个按钮不能再继续点击
diconnect.setClickable(true);//断开按钮可以点击
serialPort = getSerialPort();
if (serialPort == null) {
Toast.makeText(MainActivity.this,