android CMake 串口通信demo

前一段时间学了一下Android的串口通信,略有所成。又想起未来也许还有好多人要学习这个。就把我这个demo贡献出来抛砖引玉。话不多说 来看代码

项目整体结构
这里写图片描述

这上面的 1是底层的C语言和c头文件,这些都是谷歌写好的,我们不用管,2 也是谷歌写好的java代码,
SerialPort 里面有两个本地方法

 // JNI
    private native static FileDescriptor open(String path, int baudrate, int flags);

    public native void close();

open是打开串口,close就是关闭, 至于open里面的参数我们怎么写 在下面可以看见。还有 你导入的话,通常来说open是红色的 也就是Android studio会提醒你有错,这个不用管,这是Android studio 的错误 楼主当时在这里纠结老长时间了。。。。。强迫症 不能忍的。。。
这里写图片描述

如果 你非要看着这个红色字 不爽的话,打开setting
这里写图片描述
把NDK Support 去掉√就行了。
还有两个方法

  //获得输入流
  public InputStream getInputStream() {
        return mFileInputStream;
    }
    //获得输出流
    public OutputStream getOutputStream() {
        return mFileOutputStream;
    }

SerialPortFinder 这个类是用来扫描Android 上面串口的 ,他有一个public String[] getAllDevices() 这是用来返回所有的串口名字的,虽然 我们也可以不用他 ,直接取路径。但是有备无患哈哈。** String[] getAllDevicesPath()** 这个就是返回所有的串口路径了。和上面的方法是一一对应的。 在Android里面 就把串口 当成一个file

说完上面的 ,就还有DevicePre 这是我写的一个PreferenceFragment 用来快速保存你选择的串口配置 这是重要代码。

    entries = mSerialPortFinder.getAllDevices();
        entryValues = mSerialPortFinder.getAllDevicesPath();

3 CMakeLists.txt 这个是配置CMake的 ,以前Android 上面都是kv 现在 是CMake的天下了。
这个也是jni。
这里写图片描述

这里写图片描述

项目gradle里面要配置

 externalNativeBuild {
        cmake {
            path "CMakeLists.txt"
        }
    }
 externalNativeBuild {
            cmake {
                cppFlags ""
            }
        }

SerialPortFunction这个类是我封装的串口通信工具类,可以控制打开串口,关闭串口,向串口发送数据,接受串口的数据。

扫描二维码关注公众号,回复: 3614140 查看本文章

ReadSerialPort 这个类是我写的一个Runnable 用来读取串口的inputstream 从中解析数据。每个串口设备的数据解析规则不一样,所以我这里的 到你那里可以能就不适用了。解析规则得要你自己写
ReadSerialPort 有一个内部接口

 interface DataWeight {
        void weight(String weight);
    }

weight 方法传回解析的数据

好了 附上代码 https://github.com/planitian/JNIDate 大家如果感觉还可以的 可以star一下

猜你喜欢

转载自blog.csdn.net/a1064072510/article/details/82379962