android串口通讯

2023-05-16

一.配置
1.下载文件 https://github.com/cepr/android-serialport-api
2.复制android_serialport_api文件夹至app\src\main\java
3.复制jni文件至app\src\main文件夹下
4.复制armeabi armeabi-v7a x86至app\libs
5.在build.gradle 中的android中添加

sourceSets {
	main {
   		 jniLibs.srcDirs = ['libs']   //引用libs下的.so文件
	}
 }

二.代码

private void openSerialPort() {
    try {
    	//android屏不同,使用串口不同  /dev/ttyS0? ttyGS0? ttyAMA0
        SerialPort serialPort = new SerialPort(new File("/dev/ttyGS2"), 9600, 0); 
        inputStream = serialPort.getInputStream();
        outputStream = serialPort.getOutputStream();
        //监控串口数据
        new Thread(){
			public void run() {
				while(!isInterrupted()) {
					try {
						Thread.sleep(20);  
						int count = inputStream.available();
						if (count == 0) continue; //没有接收到数据
						byte[] buffer = new byte[count];
						inputStream.read(buffer);
						Log.d("", "接收数据:"+Arrays.toString(buffer));
					} catch ( IOException | InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		}.start();
    } catch (IOException e) {
        Log.e("openSerialPort:",  e.toString());
    }

三.使用电脑进行串口测试
1.电脑安装串口调试助手及相关驱动
2.usb转串口线连接电脑(android端也可以用usb转串口模拟)
3.打开串口调试助手,设置好COM、 波特率等

四.serial_port android6.0或以上text relocations错误解决: 重新编译so文件
4.1 新建一个项目,用于重新编译so文件
4.2下载使用ndk
File -> Project Structure
在这里插入图片描述4.3将jin文件复制到app目录下
jin文件下的Android.mk添加

LOCAL_LDFLAGS += -fPIC

4.4在build.gradle文件中添加

		externalNativeBuild {
            ndkBuild {
                path 'jni/Android.mk'
            }
        }

在这里插入图片描述4.5 make project
编译完成,在build/intermediates下发现以下文件(各平台使用的libserial_port.so文件)
在这里插入图片描述

4.6 复制local下的文件替换目标项目app\libs下的so文件
在这里插入图片描述
五.异常记录
异常状况1:
小概率在启动后, 数据能发送到android端, 从android端发送不出去;
此时重新启动串口时卡住, 过一段时间就好了,运行正常;
原因:
android启动时耗用了大部分资源,此时自启动程序、串口,可能因为卡住导致串口启动异常;
解决方式:
app自启动延时、串口再相对app启动延时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android串口通讯 的相关文章

随机推荐

  • 详述GPS原理及RTK技术应用

    完整的PPT文档在这里 xff1a 详述GPS原理及RTK技术应用 1 GPS概述 1 1定义 全球定位系统GPS xff08 Global Position System xff09 xff0c 全称为NAVSTAR GPS xff08
  • PHP HTTP Digest校验

    PHP作为客户端进行HTTP Digest校验 span class token comment 请求方法 span span class token variable username span span class token oper
  • Http Digest认证协议

    其认证的基本框架为挑战认证的结构 xff0c 如下图所示 xff1a xfeff xfeff 1 客户端希望取到服务器上的某个资源 xff0c 向服务器发送Get请求 2 服务器收到客户端的请求后 xff0c 发现这个资源需要认证信息 xf
  • Postman 安装

    Postman 的下载安装 Postman是一个用于构建和使用API的API平台 xff08 接口的调试工具 xff09 选择对应的系统和版本进行下载 https github com hlmd Postman cn 这里我的电脑是wind
  • 【安卓自定义控件系列】自绘控件打造界面超炫功能超强的圆形进度条

    在前面我们讲过了安卓自定义控件三种方式中的组合控件 xff0c 现在我们来讲解一下通过自绘的方式来实现自定义控件 xff0c 本博客将以自定义圆形进度条为例向大家讲解自定义控件的知识 xff0c 首先来看一下效果图吧 xff0c 这个是本人
  • Linux网络编程3——多进/线程并发服务器

    视频链接 黑马程序员 Linux网络编程 哔哩哔哩 bilibili https www bilibili com video BV1iJ411S7UA p 61 37 目录 一 高并发服务器 1 1 图示 1 2 分类 二 多进程并发服务
  • http请求头和响应头

    文章目录 参考HTTP通用标头Cache ControlConnectionDatePragmaTrailerTransfer EncodingUpgradeViaWarning 请求头AcceptAccept RangesAccept E
  • C++如何使用libcurl发送post请求的三种content-type的封装

    作者 xff1a 虚坏叔叔 博客 xff1a https xuhss com 早餐店不会开到晚上 xff0c 想吃的人早就来了 xff01 x1f604 C 43 43 如何使用libcurl发送post请求的三种content type的
  • 开源四轴飞行器CC3D的稳定模式和PID算法简介

    本文主要介绍一下CC3D的两大飞行模式的原理 xff1a 1 Rate 2 Attitude 以及PID的基本原理 至于AxisLock模式及Manual xff0c 日后续说 笔者是CC3D开源飞控入门玩家 xff0c 遇到过不少磕磕碰碰
  • 了解git分支和版本管理

    0 Git分支和标签的命名规范 1 分支 dev test pre pro 即master 2 标签 Tag格式 xff1a 主版本号 次版本号 修订号 类型标签 xff0c 其中类型标签可为 xff1a alpha beta rc r T
  • ubuntu下解决高并发socket最大连接数限制,tcp默认1024个连接

    nux系统默认ulimit为1024个访问 用户最多可开启的程序数目 一般一个端口 xff08 即一个进程 xff09 的最高连接为2的16次方65536 通过这个命令 ulimit n 可以看到默认值为1024 查看全局文件句柄数限制 系
  • Linux下实现Post方式

    首先了解HTTP协议各字段的含义 xff0c 以下是部分较好的归纳 xff1a HTTP一个HTTP请求报文由请求行 xff08 request line xff09 请求头部 xff08 header xff09 空行和请求数据4个部分组
  • vins中的坐标系变换及g2r函数

    slam中经常会需要表示一个刚体的位姿 例如imu的位姿 xff0c 相机的位姿 首先我们需要在一个刚体上架上一个坐标系 这个坐标系为本体坐标系 怎么架一个坐标系 xff1f imu本身就有规定其本身的x y z轴的方向 相机一般认为 xf
  • yolo_v3安装试运行小记

    github源代码 xff1a https github com qqwweee keras yolo3 Cuda下载地址 xff1a https developer nvidia com cuda toolkit archive Cudn
  • pytorch安装使用

    pytorch官网 xff1a https pytorch org get started locally conda添加清华源 xff1a conda config add channels https mirrors tuna tsin
  • ORB_SLAM3初试

    源码地址 xff1a orb salm3 github 论文地址 orb slam3 paper ORB SLAM3提供了单目 xff0c 双目 xff0c rgbd 以及各自结合IMU的数据分析实现 demo运行效果展示 xff1a 在不
  • vins-fusion代码解读[五] imu在vins里的理解

    SLAM新手 xff0c 欢迎讨论 IMU作用 vins中 xff0c IMU只读取IMU六轴的信息 xff0c 3轴线加速度 xff08 加速度计 xff09 和3轴角速度 xff08 陀螺仪 xff09 通过对陀螺仪的一次积分 xff0
  • Gazebo仿真学习——2.为Gazebo中的机器人添加实用插件

    Gazebo plugins in ROS 1 要了解2 插件类型3 添加一个ModelPlugin4 添加一个SensorPlugin5 gazebo plugins中的所有可用插件5 1 Camera5 2 GPU Laser xff0
  • 一款直播电视接口分析

    一 初步了解 最近对一款网络电视app进行分析 xff0c 要求是找到其访问直播源的接口 xff0c 初次打开apk xff0c 先做一个简单的了解 xff0c 并没有加固等处理 xff0c 只是对代码做了混淆处理 我们目的是找到其访问直播
  • android串口通讯

    一 配置 1 下载文件 https github com cepr android serialport api 2 复制android serialport api文件夹至app src main java 3 复制jni文件至app s