Android串口开发

本文介绍了在Android Studio 2.3.1环境下,利用NDK r12b进行串口通信的开发过程。首先,创建C++工程并新建C文件`SerialPort.c`,接着实现串口打开和关闭的C方法。在Java层,通过JNI调用这些方法,实现与串口的数据交互。当遇到NDK版本问题导致设置串口配置错误时,建议使用NDK r11b或更高版本。最后,提供了集成.so文件的方法,以便解决JNI调用问题。
摘要由CSDN通过智能技术生成

开发环境

Android studio2.3.1
NDK: android-ndk-r12b

创建c++工程

使用Android studio2.3.1直接创建c++工程,省去自己手动一步步的去配置jni,方便很多。如图:这里写图片描述

新建自己的C文件

在main-cpp目录下新建自己的SerialPort.c文件;相对应的将app-CMakeLists.txt修改
这里写图片描述
这里写图片描述
我这里是把创建项目时,默认的c++文件删除了,如果你没删除,需要在之前的路径后面加上自己的路径src/main/cpp/serialPort.c
还有两个serialportlib是我们自己命名的库文件名称。如果你有多个库换行添加即可

串口的c文件中的方法

java基本需要JNI层提供1.一个打开串口方法,返回一个文件描述符FileDescriptor;2.一个关闭串口 两方法就可以实现与串口进行数据 的交互。下面贴出我的serialPort.c代码

#include     <stdio.h>
#include     <stdlib.h>
#include     <unistd.h>
#include     <sys/types.h>
#include     <sys/stat.h>
#include     <fcntl.h>
#include     <termios.h>
#include     <errno.h>
#include     <jni.h>
#include     <android/log.h>
#include     <string.h>


static const char *TAG="serial_port";
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO,  TAG, fmt, ##args)
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)

static speed_t getBaudrate(jint baudrate)
{
    switch(baudrate) {
    case 0: return B0;
    case 50: return B50;
    case 75: return B75;
    case 110: return B110;
    case 134: return B134;
    case 150: return B150;
    case 200: return B200;
    case 300: return B300;
    case 600: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值