android串口的使用

本文介绍了如何在Android工程中实现串口通信。首先,创建一个包含C++支持的Android项目,利用CMakeLists.txt进行配置。接着,引入android-serialport-api库中的关键文件,并编写自定义的串口操作类。然后,在MainActivity中调用自定义串口类进行实际操作。最后,展示了用于串口通信的C和头文件,以及调整过的CMakeLists.txt配置。
摘要由CSDN通过智能技术生成

之前写的东西太乱了,最近再次使用的时候发现本可以很简单的。

=================

首先,建一个android工程,选上Include c++ support选项。

之所以这样做是因为,这样会生成一个CMakeLists.txt的文件,后面我们会修改这个文件。

在工程目录app\src\main\cpp中有一个文件名文native-lib.cpp的文件,其中CMakeLists.txt就是编译这个cpp文件的依据。

如果我们加入工程的cpp文件或者c文件名字不同,则需要修改CMakeLists.txt的内容。

------------------------------------------------

其次,加入android-serialport-api类中的2个文件,文件名是SerialPort.java和SerialPortFinder.java。

再写一个自己使用或者说测试用的类。

public class MySerialPort {

    private static Context mContext;
    private static SerialPort mSerialPort;
    private static InputStream mInputStream;
    private static OutputStream mOutputStream;

    public MySerialPort(Context ctx) {
        mContext = ctx;
    }

    public static void openSerialPort(Context ctx) {

        if (mSerialPort == null) {
            try {
                /* Open serial port */
                mSerialPort = new SerialPort(new File("/dev/ttyAMA4"), 115200, 0);
                mOutputStream = mSerialPort.getOutputStream();
                mInputStream = mSerialPort.getInputStream();
                /* Start read serial port thread */
                mOutputStream.write('a');
                new RecvThread().start();
            } catch (IOException e) {
                Toast.makeText(ctx, "打开失败", Toast.LENGTH_SHORT).show();
                e.printStackTrace();
            }
        } else {
            /* Close serial port */
            mSerialPort.close();
            mSerialPort = null;
        }
    }

    public void close() {
        mSerialPort.close();
        mSerialPort = null;
    }

    private static class RecvThread extends Thread {

        @Override
        public void run() {
            super.run();
      //接收的数据处理
        }
    }
}

------------------------------------------------

再次,只要在MainActivity中调用自己自定义的MySerialPort即可。

如:

MySerialPort mySerialPort = new MySerialPort(this);
mySerialPort.openSerialPort(this);

------------------------------------------------

最后,也是很重要的.c文件和.h文件  文件名是serial_port.c

#include "termios.h"
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>

#include <fcntl.h>
#include <string.h>
#include <jni.h>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值