android-serialport-api 的下载地址:点击这里
最近有关于在 Android 上实现串口通讯的需求,肯定会牵涉到 JNI 相关,关于 JNI 相关知识请参考:
Android NDK开发(一) 入门,
Android NDK开发(二) 底层实现HEX的编码和解码。

一、创建 NDK 项目

这里在 AndroidStudio 中使用的是 CMark 工具,下载方法如下图所示:

Android 开发笔记 —— AndroidStudio 中使用 android-serialport-api 进行串口通讯_第1张图片

然后创建一个新项目,勾选 C++,如下图所示:

Android 开发笔记 —— AndroidStudio 中使用 android-serialport-api 进行串口通讯_第2张图片

别忘记也要勾选:

Android 开发笔记 —— AndroidStudio 中使用 android-serialport-api 进行串口通讯_第3张图片

确认以上都勾选后,开始创建项目。

 注意:如果是中途项目需要导入 NDK 可按照如下步骤拷贝:

1、在 app 的 gradle 文件内拷贝如下脚本:

android{    defaultConfig{        externalNativeBuild {            cmake {                cppFlags "-frtti -fexceptions"            }        }    }    externalNativeBuild {        cmake {            path "CMakeLists.txt"        }    }}

2、在项目的 local.properties 文件下加入如下脚本:

# 指定 NDK 文件夹ndk.dir=E\:\\App\\Android-sdk\\ndk-bundle

3、拷贝 CMakeLists.txt 文件到新项目中

二、导入文件

1、拷贝必要文件到自己的项目中,如下图所示:

Android 开发笔记 —— AndroidStudio 中使用 android-serialport-api 进行串口通讯_第4张图片

图中画横线的 SerialPort.c 及 SerialPort.java 是必要文件,SerialPortFinder.java 用于查找串口设备,如果知道串口路径则无需导入。
将 SerialPort.c 文件拷贝到 src/main 目录下的 cpp 文件夹,没有则创建。

2、编辑 CMake 脚本,添加如下代码:

# 每次创建一个新的库,需要添加另一个 add_library() 脚本,每个add_library 脚本语句只能导入一个库add_library(serial_port            SHARED            src/main/cpp/SerialPort.c)

如果同步报 Log 日志异常则需要给 .c 文件导入 Log 库,具体导入方法如下:

# 该语句可以给一个 .c 库文件导入多个依赖库target_link_libraries( # Specifies the target library.                       # add_library 生成的                       serial_port                       # Links the target library to the log library                       # included in the NDK.                       # find_library 找到的系统库                       ${log-lib} )

默认是已经有导入 log-lib 库的,如果没有的话则需要在上面代码之前导入 log-lib 库,如下所示:

# find_library 定义当前代码库需要依赖的系统或者第三方库文件find_library( # Sets the name of the path variable.              # 指定要查找的系统库, 给一个名字              log-lib              # Specifies the name of the NDK library that              # you want CMake to locate.              # 真正要查找的liblog.so或者liblog.a              log )

当完成以上步骤后,就已经完成文件的导入了。

三、串口通讯操作

此处只对串口读写进行简单封装,代码如下所示(代码为 Kotlin):

class SerialPortModule(file: File, baudrate: Int, flags: Int) {    // 串口    private var mSerialPort = SerialPort(file, baudrate, flags)    /**     * 写入串口数据     */    fun writePort(data:ByteArray) {        doAsync {            val mOutputStream = mSerialPort.outputStream            try {                mOutputStream.write(data)                Log.i(javaClass.simpleName, "写入成功!")            } catch (e: IOException) {                Log.i(javaClass.simpleName, "写入失败!")                e.printStackTrace()            }        }    }    /**     * 读取串口数据     *     * @param callback 回调接口     */    fun readPort(callback: OnResultListener?) {        doAsync {            while (true){                val size: Int                val mInputStream = mSerialPort.inputStream                try {                    val buffer = ByteArray(256)                    size = mInputStream.read(buffer)                    if (size > 0)                        Log.i(javaClass.simpleName, "接收到的数据:" + buffer.toString(Charset.defaultCharset()))                    callback?.onReceived(buffer)                    Log.i(javaClass.simpleName, "接收成功!")                } catch (e: IOException) {                    e.printStackTrace()                    Log.i(javaClass.simpleName, "接收失败!")                }            }        }    }    /**     * 关闭串口     */    fun close() {        mSerialPort.close()    }    /**     * 结果监听器     */    interface OnResultListener {        /**         * 当接收到数据时         *         * @param data 接收的数据         */        fun onReceived(data: ByteArray)    }}

到此使用 android-serialport-api 进行串口通讯就介绍完毕,有问题可以在评论处留言。
感谢阅读!

更多相关文章

  1. Android Studio的Gradle文件方法说明
  2. Android的文件系统
  3. 让Android中的webview支持页面中的文件上传
  4. Android 文件布局一些细节备忘
  5. Android 使用grade实现Android 项目debug版与release版共存
  6. Android布局文件的属性值解析
  7. Android 文件的保存与读取之自带储存空间
  8. Google 将 Android 4.0.4 源代码送交 AOSP 开源项目
  9. 分析脚本文件AndroidInitProcess分析心得(1)

随机推荐

  1. Android撬动IT市场的新支点!
  2. Android(安卓)O / Android(安卓)8.0 新特
  3. Android中实现滑动的七种方式
  4. 深入探讨 Android(安卓)传感器
  5. Android(安卓)事件流详解之View事件分发
  6. Android初步(开发环境的搭建)
  7. Android支付之支付宝封装类
  8. 另一个视角搞android——《Android软件安
  9. Android撬动IT市场的新支点
  10. android自学笔记 开始--->第一个应用--->