Android串口通信

简介: Android串口通信 串口通信偏向嵌入式一点,是Android设备通过串口与其他设备进行通信的一种方式,本文介绍的Android纯串口的通信,并不是手机上的USB串口通信。

Android串口通信

串口通信偏向嵌入式一点,是Android设备通过串口与其他设备进行通信的一种方式,本文介绍的Android纯串口的通信,并不是手机上的USB串口通信。

P1

手机上是没有这个串口的哦。

关于串口通信,Google已经给出了源码,地址在GitHub android-serialport-api

四年前的代码,还是Eclipse工程,本文主要介绍如何在Android Studio中使用。

源码地址在 KqwSerialPortDemo

集成

Java层的代码,Googley已经给封装好了,主要的都在 SerialPort.java

1.导入so

没有什么难度了,将so导入到项目

P1

2.导入jni文件

main目录下创建cpp文件夹,并将jni源文件和CMakeLists.txt导入

P2

build.gradle修改cmake路径。

android {
    ……
    externalNativeBuild {
        cmake {
            path "src/main/cpp/CMakeLists.txt"
        }
    }
    ……
}

3. 修改jni源文件

这里要注意jni文件函数名的写法:Java_包名_类名_方法名

P3

在将源码里的jni导入过来的时候,包名是源码Demo的包名,我们在自己的工程里要换成自己的包名、类名,源文件和头文件都要记得改。

4. 修改CMakeLists.txt与SerialPort.java

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

add_library(SerialPort SHARED
            SerialPort.c)

# Include libraries needed for libserial_port lib
target_link_libraries(SerialPort
                      android
                      log)

SerialPort.java

static {
    System.loadLibrary("SerialPort");
    System.loadLibrary("serial_port");
}

使用

基类

需要使用串口通信的类继承 SerialPortActivity.java

打开串口

  • 端口号:/dev/ttyS2
  • 比特率:115200
public SerialPort getSerialPort() throws SecurityException, IOException, InvalidParameterException {
    if (mSerialPort == null) {
        mSerialPort = new SerialPort(new File("/dev/ttyS2"), 115200, 0);
    }
    return mSerialPort;
}

关闭串口

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

发送数据

Message message = Message.obtain();
message.obj = text.getBytes();
sendingHandler.sendMessage(message);

接收消息

@Override
protected void onDataReceived(final byte[] buffer, final int size) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(mApplication, "收到消息:" + new String(buffer) + "  size = " + size, Toast.LENGTH_SHORT).show();
        }
    });
}

下载并安装NDK与CMake

下载并安装NDK与CMake

相关文章
|
7月前
|
存储 Linux Android开发
会C/C++就可以开发Linux/Android应用程序?替代传统串口屏的Yoxios了解一下!
会C/C++就可以开发Linux/Android应用程序?替代传统串口屏的Yoxios了解一下!
143 0
|
Ubuntu Android开发
QT应用编程: 编写HC05串口蓝牙调试助手(Android系统APP)
QT应用编程: 编写HC05串口蓝牙调试助手(Android系统APP)
535 0
QT应用编程: 编写HC05串口蓝牙调试助手(Android系统APP)
|
Java Android开发 数据格式
Android项目实战(四十五):Usb转串口通讯(CH34xUARTDriver)
需求为:手机usb接口插入一个硬件,从硬件上获取数据  例如:手机usb插入硬件A,A通过蓝牙通讯获取设备a、b的数据,作为中转站(可以做些数据处理)将数据(设备a、b产生的)传给手机程序。              设备A也可以自身就是一个传感器,自身就会生成数据传送给手机程序。
3938 0
|
Android开发 容器 缓存
android socket 线程连接openwrt与arduino单片机串口双向通信
package zcd.netanything; import java.io.BufferedReader; import java.io.InputStreamReader; import java.
1454 0
|
Java API 调度
Android 实现串口的移植
安卓串口的实现,需要底层C++配合,不过这次我们根据framework中的思想,直接用API修改提供给JAVA层调用,这个就比较简单了。 DEV项目需要,要实现在Android中实现串口的收发功能,有几种方法可以参考使用。
1044 0
|
监控 Linux Android开发
Android(Linux)实时监控串口数据
之前在做WinCE车载方案时,曾做过一个小工具TraceMonitor,用于显示WinCE系统上应用程序的调试信息,特别是在实车调试时,用于监控和显示CAN盒与主机之间的串口数据。因为需要抢占市场先机,经常在新车上市前,就得配合CAN解码盒厂商同步调试车机端软件。
1580 0
|
4天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
26天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
23小时前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
17天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。