SerialPort-4.0.+ 使用说明(Java版本)

2023-10-31 03:59

本文主要是介绍SerialPort-4.0.+ 使用说明(Java版本),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SerialPort-4.0.+

项目官网

Kotlin版本使用说明

介绍

SerialPort 是一个开源的对 Android 蓝牙串口通信的轻量封装库,轻松解决了构建自己的串口调试APP的复杂程度,让人可以专注追求自己设计,不用考虑蓝牙串口底层的配置。
相较于3.0.+版本,4.0.+新增了对蓝牙4.0及以上设备的支持。具体更新内容见下文详细说明。

特性

  • 兼容传统蓝牙与BLE蓝牙设备
  • 内部集成搜索页面
  • 自动重连上一次连接的设备
  • 间隔时间自动重连
  • Toast提示信息修改

QQ技术交流群

QQ群二维码

最新版本信息

  • 4.1.0
    • 修复内置搜索页面搜索到设备名为空的设备造成闪退的问题
    • 修复连接设备成功后会报广播接收器没有被注册的问题
    • 优化搜索结果的处理
    • 内置搜索页面新增设备类型字段
    • 内置搜索页面设备图标跟设备类型相匹配
    • 新增附带搜索设备类型的搜索状态回调
    • 新增通过设置地址自动区分设备连接函数
    • 优化对蓝牙开关状态的处理
  • 4.0.2
    • 添加搜索状态回调,setDiscoveryStatusCallback
    • 接收回调函数名修改,由 setReceivedDataListener 变更为 setReceivedDataCallback
  • 4.0.1
    • 修复 setLegacyUUIDsetBleUUID 不能链式调用的问题
  • 4.0.0
    • 新特性
      • 支持蓝牙4.0以上设备
      • 新增间隔自动重连
      • 新增Toast提示内容修改
      • 新增搜索页面忽视没有名字的设备
      • 部分API过时,详情见下文
    • 修复
      • 打开内置搜索页面闪退
      • 断开连接延时过长
      • 未连接时发送数据自动打开内置搜索页面不稳定
      • 发送十六进制 0A 时,自动变为 0A 0D

源码地址

  • ​GitHub仓库
  • Gitee仓库

Demo示例源码地址

网盘下载
站内下载

使用说明

添加依赖

  • 根目录下的 build.gradle加入以下代码:
allprojects {repositories {//...maven { url 'https://jitpack.io' }}
}
  • app模块的 build.gradle 加入以下代码即可:
dependencies {//根据自身网络情况以下两个仓库二选一即可implementation 'com.github.Shanyaliux:SerialPortSample:4.1.0' //国外仓库implementation 'com.gitee.Shanya:SerialPortSample:4.1.0' //国内仓库
}

获取SerialPort实例

SerialPort serialPort = SerialPortBuilder.INSTANCE//是否打印调试信息.isDebug(true)//设置传统设备连接UUID(不设置则为以下默认值)
//            .setLegacyUUID("00001101-0000-1000-8000-00805F9B34FB")//设置BLE设备连接UUID(不设置则为以下默认值)
//            .setBleUUID("0000ffe1-0000-1000-8000-00805f9b34fb")//是否开启启动时自动重连.autoConnect(false)//是否开启间隔时间自动重连(间隔时间time不设置则默认为10000ms).setAutoReconnectAtIntervals(false, 10000)//搜索结果是否忽略没有名字的设备.isIgnoreNoNameDevice(true)//发送数据时若未连接设备是否自动打开内置搜索页面.autoOpenDiscoveryActivity(true)//在接收数据格式为十六进制时,是否将其自动转换为字符串.autoHexStringToString(false)//设置接收数据格式(若不设置则默认为字符串)
//            .setReadDataType(SerialPort.READ_STRING)//设置发送数据格式(若不设置则默认为字符串)
//            .setSendDataType(SerialPort.SEND_STRING)//搜索状态监听(status 为搜索状态).setDiscoveryStatusCallback((status) -> {return null;})//搜索状态带类型的监听//deviceType = SerialPort.DISCOVERY_BLE 搜索BLE设备//deviceType = SerialPort.DISCOVERY_LEGACY 搜索传统类型//status 为搜索状态.setDiscoveryStatusWithTypeCallback((deviceType, status) -> {return null;})//连接状态监听(status 为连接状态,bluetoothDevice 为连接设备).setConnectionStatusCallback((status,bluetoothDevice) ->{return null;})//接收数据监听(string 为收到的数据).setReceivedDataListener((string) -> {return null;}).build(this);

设置UUID

  • 传统设备
SerialPort.Companion.setLegacyUUID("00001101-0000-1000-8000-00805F9B34FB");
  • BLE设备
SerialPort.Companion.setBleUUID("0000ffe1-0000-1000-8000-00805f9b34fb");

BLE设备的UUID可以在连接后调用 serialPort.printPossibleBleUUID() 来查看一些可选值

搜索设备

//以下两种方案均可
serialPort.doDiscovery(this);
SerialPortBuilder.INSTANCE.doDiscovery(this);

停止搜索

serialPort.cancelDiscovery(this);

搜索状态监听

//status 为搜索状态
serialPort.setDiscoveryStatusCallback((status) ->{  return null;
});
//搜索状态带类型的监听
//deviceType = SerialPort.DISCOVERY_BLE 搜索BLE设备
//deviceType = SerialPort.DISCOVERY_LEGACY 搜索传统类型
//status 为搜索状态
serialPort.setDiscoveryStatusWithTypeCallback((deviceType, status) -> {return null;
});

若多处设置了监听,仅最后一次设置的生效

获取搜索结果

serialPort.getPairedDevicesList(); //获取已配对设备
serialPort.getUnPairedDevicesList(); //获取未配对设备

上述方法在4.0.0开始被弃用,建议使用以下方法

serialPort.getPairedDevicesListBD(); //获取已配对设备
serialPort.getUnPairedDevicesListBD(); //获取未配对设备

连接设备

  • 打开内部集成的搜索页面
serialPort.openDiscoveryActivity();
  • 打开自定义的搜索页面
Intent intent = new Intent(this, YourActivity.class);
serialPort.openDiscoveryActivity(intent);
  • 通过设备地址连接
  1. 传统设备连接
serialPort.connectLegacyDevice("98:D3:32:21:67:D0");
  1. BLE设备连接
serialPort.connectBle("98:D3:32:21:67:D0");

断开连接

serialPort.disconnect()

连接状态监听

serialPort.setConnectStatusCallback((status,device)->{return null;
});

上述方法在4.0.0开始被弃用,建议使用以下方法

serialPort.setConnectionStatusCallback((status,bluetoothDevice)->{return null;
});

若多处设置了监听,仅最后一次设置的生效

设置接收数据格式

//SerialPort.READ_HEX 十六进制
//SerialPort.READ_STRING 字符串
//不设置则默认字符串形式
serialPort.setReadDataType(SerialPort.READ_HEX);

目前BLE设备暂不支持设置数据格式设置

设置发送数据格式

//SerialPort.SEND_HEX 十六进制
//SerialPort.SEND_STRING 字符串
//不设置则默认字符串形式
serialPort.setSendDataType(SerialPort.SEND_HEX);

目前BLE设备暂不支持设置数据格式设置

发送数据

//以下两种方案均可
serialPort.sendData("hello");
SerialPortBuilder.INSTANCE.sendData("hello");

若发送的数据为十六进制,则输入的数据需要为偶数个,只有一位的需要在其前面补0,且字母大写
例如:发送0x0a 0x0D,需要写成 serialPort.sendData("0A 0D")

接收消息监听

serialPort.setReceivedDataCallback((string) -> {return null;
});

若多处设置了监听,仅最后一次设置的生效

十六进制字符串转换成字符串

String string = serialPort.hexStringToString(hexString);

此时的接收数据格式为十六进制

修改Toast提示

//是否显示
SerialPortToast.INSTANCE.getConnectSucceeded().setStatus(true);
//提示内容
SerialPortToast.INSTANCE.getConnectSucceeded().setContent("连接成功");
//显示时长 Toast.LENGTH_SHORT 或 Toast.LENGTH_LONG
SerialPortToast.INSTANCE.getConnectSucceeded().setTime(Toast.LENGTH_SHORT);
项目描述默认值
connectSucceeded连接成功时连接成功
connectFailed连接失败时连接失败
disconnect断开连接时断开连接
connectFirst未连接设备时执行发送数据请先连接设备
disconnectFirst已连接设备后执行连接操作请先断开连接
permission询问是否开启定位权限请先开启位置权限
hexTip发送十六进制时,数据格式不对提示请输入的十六进制数据保持两位,不足前面补0
openBluetoothSucceeded打开蓝牙成功时蓝牙打开成功
openBluetoothFailed打开蓝牙失败时蓝牙打开失败

这篇关于SerialPort-4.0.+ 使用说明(Java版本)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312678

相关文章

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu