android ble 上位机,BLE的Android上位机开发(下)

article/2025/9/26 15:53:03

原标题:BLE的Android上位机开发(下)

ELLO! 大家好!马上就更新下篇了呢~哈哈!(上篇的地址:BLE的Android上位机开发(上))废话不多说了,先上主角吧!代码如下!

[Java] 纯文本查看复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

private void setBleServiceListener() {

//Ble服务发现回调

mBleService.setOnServicesDiscoveredListener( new BleService.OnServicesDiscoveredListener() {

@Override

public void onServicesDiscovered(BluetoothGatt gatt, int status) {

if (status == BluetoothGatt.GATT_SUCCESS) {

List gattServiceList = gatt.getServices();

}

}

});

//Ble扫描回调

mBleService.setOnLeScanListener( new BleService.OnLeScanListener() {

@Override

public void onLeScan(BluetoothDevice device, int rssi, byte [] scanRecord) {

//每当扫描到一个Ble设备时就会返回,(扫描结果重复的库中已处理)

Log.w( "-" , "->>扫描到设备:" +device.getName()+ ">>" +device.getAddress()+ ">>" +rssi);

}

});

//Ble连接回调

mBleService.setOnConnectListener( new BleService.OnConnectionStateChangeListener() {

@Override

public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {

//

}

});

//Ble数据回调

mBleService.setOnDataAvailableListener( new BleService.OnDataAvailableListener() {

@Override

public void onCharacteristicChanged(BluetoothGatt _gatt, final BluetoothGattCharacteristic characteristic) {

//处理通知返回的数据

});

}

为了便于理解,这几个我分开解释一下吧:

1、mBleService.setOnLeScanListener

这个的作用是,每当Android扫描到一个新的BLE设备,便会触发这个listener。扫描结果重复的库中已处理,这一部分是Blelib里面已经处理好了的,很方便的!

可以通过device.getName()来显示设备名。这个跟gatt_db.h里面CHARACTERISTIC(char_device_name的字段值是一样的哦~

连接这个设备,使用函数:mBleService.connect(device.getAddress());就好了!

2、mBleService.setOnConnectListener

这个回调函数在connect操作之后才会被调用,这里的参数newState,主要有几种类型(灰常重要):

STATE_CONNECTED 设备已经连接

STATE_CONNECTING 设备正在连接到android

STATE_DISCONNECTED 设备已经断开连接

STATE_DISCONNECTING 设备正在断开连接

这个newState的判断还是很准确的,已经测试过了,就是反应时间不是很快。。我把41Z复位之后,这个大约需要四五秒的样子才能反应过来。。 不过可以借助这个作断线重连,很不错!

3、mBleService.setOnServicesDiscoveredListener

在设备STATE_CONNECTED 之后,就可以触发ServicesDiscoveredListener了。BLE设备的所有可见services都在gattServiceList 里面,可以通过 service.getUuid()取出每个service的uuid

每个service里面的characteristic可以用service.getCharacteristics();取出,这样就能为每个characteristic执行read write notify操作了。如果我们在41Z里面设置了SendNotification,比如41Z默认的电量,那么当android接收到这个Notification时,就会触发下面要说到的。

4、mBleService.setOnDataAvailableListener

这里重写了onCharacteristicChanged函数,当Notification到达时,就会进入这个onCharacteristicChanged函数。函数里characteristic参数即是对应由哪个characteristic发来的通知,读取这个值的操作是characteristic.getIntValue

最后,附一张手机APP的截图吧~大家不要笑话我哈~~

a8071efebdc728151ed02df5d93a3375.png

helloeeworld为好友,发送职业或EEWORLD论坛账号+感兴趣的方向,经审核通过即会被拉入我们在不用领域建立的微信交流群。返回搜狐,查看更多

责任编辑:


http://chatgpt.dhexx.cn/article/JMuIJ4o3.shtml

相关文章

java上位机开发(java基础)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 java基础就是把java环境安装好,把基础程序构建起来。至少说让开发的同学来说有一点信心。从这一点来说,就算编写一个“Hell…

上位机开发的意义

上位机开发的意义 常见的上位机定义为一台可以发出特定操控命令的计算机, 通过操作预先设定好的命令,将命令传递给下位机,通过下位机来控制设备完成各项操作。此定义着重于强调控制指令的发送,实际上除了发送控制命令&#xff0c…

Qt之上位机开发实战(三)

UDP编程 udp相对于tcp来说相对简单&#xff0c;udp不分客户端和服务器&#xff0c;只需要使用一个QUdpSocket类&#xff0c;首先完成布局 Pro文件下加QT core gui network&#xff0c;.h文件下加#include <QUdpSocket> .h文件public下创建对象 QUdpSocket *udpSocket;…

C# | 上位机开发新手指南(三)框架

上位机开发新手指南&#xff08;三&#xff09;框架 文章目录 上位机开发新手指南&#xff08;三&#xff09;框架.NETWinFormsWPFUnity3D CQTMFC 其他语言LabVIEW .NET WinForms 在上位机开发中&#xff0c;Windows Forms是使用最广泛的C#框架之一。Windows Forms是.NET Fra…

哈喽上位机(上位机开发指南)

哈喽&#xff0c;上位机&#xff01; -------上位机开发指南 作者&#xff1a;Robert Zhang本博客以一个程序猿的角度解答了: - 有关上位机开发的疑惑 - 上机软件开发需要学习哪些知识 - 开发一个完整商业软件所需的技术与实现方法 - 怎样美化软件&#xff0c;那些漂亮的软件…

C#上位机开发常遇问题

C#上位机开发常遇问题 C#引用C动态库/静态库静态库动态库 unsafe和fixed关键字的应用unsafefixed Path类的使用写在结尾 最近完成了一个小项目的开发&#xff0c;在开发中遇到了一些问题&#xff0c;我感觉这些问题其他人在开发的时候也会遇到&#xff0c;所以我在这边总结一下…

C# 三菱PLC上位机开发环境搭建

一、安装软件 用到两个三菱的软件&#xff1a; 1. MX Component&#xff08;下载地址 也可以直接在官网上搜索&#xff0c;注意MX后面有空格&#xff09; 用于连接PLC 2. GX Works2&#xff08;下载地址 用GX Works3也行&#xff09; 这个软件主要是电气做PLC编程&#xf…

USB上位机开发

上位机开发采用图形化界面&#xff0c;使用C#语言进行开发。调用C编写的Dll动态库&#xff0c;实现与STM32进行USB通信的目的。 首先&#xff0c;编写Dll动态库。 开发环境采用VS2017&#xff0c;语言C 将lusb0_usb.h和libusb.lib文件拷贝到工程目录下。 libusb-win32-bin-…

Matlab上位机开发

Matlab上位机开发 1 了解上位机1.1 上位机的作用1.2 常用上位机开发方式1.2.1 Windows上位机&#xff08;基于串口通信&#xff09;1.2.2 Android上位机&#xff08;基于网络通信&#xff09; 1.3 教程概况1.3.1 C#上位机开发教程1.3.2 IoT App开发1.3.3 Matlab上位机开发 2 He…

C# | 上位机开发新手指南(一)概述

C#上位机开发新手指南&#xff08;一&#xff09;概述 文章目录 C#上位机开发新手指南&#xff08;一&#xff09;概述前言学习C#编程基础熟悉上位机开发相关知识选择合适的开发环境熟练掌握C#编程技巧掌握常用控件的使用方法学习与硬件通讯的方法最后 前言 C#&#xff0c;是微…

上位机开发流程

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;虚心受教。 文章目录 前言一、上位机是什么&#xff1f;二、开发步骤1.了解需求2.分析需求3.设计软件模块4.测试软件5.交付及维护软件 总结&#xff1a; 前言 没有人可以真正理解另一个…

上位机开发(怎么开发上位机)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 要开发上位机,主要还是看具体的用途是什么。比如说,是不是负责烧入固件;是不是调制参数;是不是监控;是不是系统控制、是不是仿真等等。当然,不管是什么样的上位机开发,有一些…

VS上位机开发——串口助手

VS上位机开发——串口助手 目录 VS上位机开发——串口助手一、新建项目二、控件布局三、编写程序1、端口更新函数2、启动窗口加载函数3、"打开串口"按键回调函数4、"清除接收"按键回调函数5、"发送"按键回调函数6、串口接收函数7、定时器中断回调…

C++刷题笔记(4)——leetcode209、904

题目1&#xff1a;209.长度最小的子数组 暴力解法 解题思路&#xff1a; 用两个for循环&#xff0c;外层for循环负责做子序列的起点&#xff0c;内层for循环负责遍历数组&#xff0c;寻找符合条件的子序列 然后外层for循环移动子序列的起点&#xff0c;继续再数组中寻找新的符…

904. 水果成篮(c++)

滑动窗口&#xff1a; class Solution { public:int totalFruit(vector<int>& fruits) {int max_len 0;int left 0;unordered_map<int,int>mp;for(int right 0; right < fruits.size();right){mp[fruits[right]];while(mp.size() > 2){mp[fruits[lef…

904-线程池项目死锁问题分析

死锁问题 1、在ThreadPool的资源回收&#xff0c;等待线程池所有线程退出时&#xff0c;发生死锁问题&#xff0c;导致进程无法退出 我们的资源回收代码如下&#xff1a; //线程池析构 ThreadPool::~ThreadPool() {isPoolRunning_ false;notEmpty_.notify_all();//等待线程…

ORACLE 错误 904

错误原因&#xff1a; Oracle 版本中IMP和EXP的兼容问题。 我这里是因为本机上的oracle版本高于服务器上的oracle版本 解决办法&#xff1a; 安装和服务器同版本的10g客户端&#xff0c;在命令窗口化中切换到10g客户端的bin目录下面进行导入就ok了。 为什么要切换呢&#xf…

leetcode:904. 水果成篮

题目来源 leetcode&#xff1a;904. 水果成篮 题目描述 题目解析 题意 题意从任意位置开始&#xff0c;若最多只能收集两种水果&#xff0c;问最多能收集多少个水果。 这道题目可以理解为求只包含两种元素的最长连续子序列&#xff0c;和leetcode&#xff1a;159.最多有两个…

2022-7-8 Leetcode 904.水果成篮

错误的代码&#xff1a; class Solution { public:int totalFruit(vector<int>& fruits) {int start 0;int end 0;set<int> myset;int len 0;for (; end < fruits.size(); end){myset.insert(fruits[end]);if (myset.size() > 2 && start &l…

【LeetCode】图解 904. 水果成篮

904. 水果成篮 904. 水果成篮 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示&#xff0c;其中 fruits[i] 是第 i 棵树上的水果 种类 。 你想要尽可能多地收集水果。然而&#xff0c;农场的主人设定了一些严格的规矩&#xf…