MTK 串口在应用中的应用

作为一个工具篇,在后续工作中经常会用到串口测试工具,方便工作中作为测试工具使用。


资料参考

串口的原理基本一致的,没有特别的东西,无论在哪里使用,顶多一层封装。
这里可以参考一下之前的笔记,framework层的应用
串口在framework层的应用

或者 网上太多的demo 封装,可参考下。

串口应用场景

  • 串口,作为一种协议,使用场景无处不在。
  • 我接触的在Android平台上外挂的各种模组通讯用到了串口:功放模组、物联网模组、话筒模组、语音模块模组、各种传感器模组、各种外围设备通讯…

代码分析

串口so文件的载入和配置

在这里插入图片描述

在 build.gradle 文件中配置 .so 库文件


        ndk {
   
   
            abiFilters 'armeabi','armeabi-v7a'
        }

本地native 方法

使用到串口,核心三个方法,如下

  • 加载.so 文件
  • 打开串口
  • 关闭串口
   static {
   
   
        System.loadLibrary("serial_port");
    }

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

    private native void close();

SerialPort 流封装方法

本地方法,最终通过流来和串口进行通讯的,下面给出 open 的具体操作,方法如下

  public SerialPort(File device, int baudate) throws IOException {
   
   
        if (!device.canRead() || !device.canWrite()) {
   
   
            try {
   
   
                Process su = Runtime.getRuntime().exec("su");
                String cmd = "chmod 777 " + device.getAbsolutePath();
                su.getOutputStream().write(cmd.getBytes());
                su.getOutputStream().flush();
                int waitFor = su.waitFor();
                boolean canRead = device.canRead();
                boolean canWrite = device.canWrite();
                if (waitFor != 0 || !canRead || !canWrite) {
   
   
                    throw new SecurityException();
                }
            } catch (Exception e) {
   
   
                e.printStackTrace();
            }
        }
        mFd = open(device.getAbsolutePath(), baudate);
        if (mFd == null) {
   
   
            throw new IOException();
        }
        mFileInputStream = new FileInputStream(mFd);
        mFileOutputStream = new FileOutputStream(mFd);
    }

其中 open 是native 方法,拿到了文件描述符,就可以进行 流操作了。

完整的SerialPort 代码如下:


import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野火少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值