首页
学习
活动
专区
圈层
工具
发布

【错误记录】Android 应用连接 BLE 设备无法读取数据 ( 可以写出数据 | 无法读取数据 )

文章目录 一、问题描述 二、问题分析 三、完整设置代码 一、问题描述 ---- Android 应用连接 BLE 硬件设备后 , 出现如下情况 : 发送数据成功 : Android 应用 向 BLE 硬件设备发送数据..., 成功 ; 接收数据失败 : Android 应用 无法接收到 BLE 硬件设备发送给手机的数据 ; 二、问题分析 ---- 举个栗子 : 这是在 Google 官方的 BLE 蓝牙示例程序 BluetoothLeGatt...集合中的所有元素设置 BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE 值 , 然后写出该 BluetoothGattDescriptor , 此时设置读取该...BluetoothGattCharacteristic 特性值才能生效 , 否则无法读取其中的数据 ; BluetoothGattCharacteristic 中维护了下面的变量 , BluetoothGattDescriptor...蓝牙设备的数据 ;

3.8K00

HarmonyOS学习路之开发篇—网络与连接(蓝牙开发 二)

BLE扫描和广播 场景介绍 通过BLE扫描和广播提供的开放能力,可以根据指定状态获取外围设备、启动或停止BLE扫描、广播。...根据获取到的服务和特征值,调用read和write方法可以读取或者写入对应特征值数据。...RSSI值成功后的操作,对端RSSI值为rssi } } } BLE外围设备数据管理 场景介绍 BLE外围设备作为服务端,可以接收来自中心设备(客户端)的GATT连接请求,应答来自中心设备的特征值内容读取和写入请求...receiveCharacteristicReadEvent(BlePeripheralDevice device, int requestId, int offset, GattCharacteristic characteristic) 收到中心设备对特征值的读取请求回调...从回调接口onCharacteristicWriteRequest中获取中心设备发送来的消息,调用notifyCharacteristicChanged接口向中心设备发送通知。

2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    微信小程序 BLE 基础业务接口封装

    蓝牙特征值 GATT(Generic Attribute Profile)协议定义了蓝牙设备之间的通信方式,其中单个服务(Service)可以包含多个特征值(Characteristic),每个服务和特征值都有特定的‌...特征值是蓝牙设备中用于存储和传输数据的基本单元,每个特征值都有其特定的属性和值。 属性协议(ATT)定义数据的检索,允许设备暴露数据给其他设备,这些数据被称为属性(attribute)。...通过属性可以设置特征值操作类型,如读取、写入、通知等,操作对象即为特征值的值(value)。一个特征值可以同时拥有多种操作类型。...小程序接口封装 需要知道的是,虽然蓝牙是开放协议,但由于苹果 IOS 系统的封闭设计,目前苹果设备无法与 Android 及其它平台设备通过蓝牙相连。 本文描述皆基于 Android 平台。...; wx.createBLEConnection:连接 BLE 设备; 接收数据 wx.notifyBLECharacteristicValueChange:为下一步骤做铺垫(注意:必须对手设备的特征支持

    2.3K10

    Python 与 BLE 设备通信指南 -- P1

    通信中, 设备工作于主从模式:主设备可主动扫描并连接周围从设备的广播信号.从设备则通过广播自身信号, 被动等待主设备发起连接.用一个简单的比喻, 这就像美食街里有许多商贩在叫卖 (从设备广播) , 而顾客...商贩只能等待顾客上门, 而不能主动将商品塞给顾客.在本次实验中, 树莓派CM0将会作为主设备, 对从设备进行操作.实际上, 两片树莓派CM0之间也可设置为一主一从进行通信, 但受限于我只有一块CM0,...本次实验暂不演示该场景.下一步安排: 为便于理解与实践, 下一章我们将以常见的小米温湿度计作为从设备, 完成从发现, 连接到数据读取的全过程演示.环境准备与配置启用蓝牙电源输入bluetoothctl进入蓝牙管理交互界面...在实际使用中建议通过MAC地址指定设备.数据读写操作读取指定BLE设备指定特征数据连接设备后, 可通过主动读取 (Read)或订阅通知 (Notify)两种方式获取特征值中的数据.若特征仅支持读取, 请注释掉通知订阅部分代码...设备的特征值有读取(Read), 写入(Write), 通知(Notify)等属性, 一个特征值可以有多个属性.特征值的属性可以用上一节列出指定BLE设备服务与特征列表提供的代码来查看.写入指定BLE设备指定特征数据代码尝试写入数据

    78920

    Android 蓝牙开发(2)——低功耗蓝牙

    ATT 经过优化,可在 BLE 设备上使用。为此,它使用了尽可能少的字节。每个属性由通用唯一标识符(UUID)来唯一标识。...(是在和 BLE 设备进行通信的时候主要的操作内容) 描述符 是用来定义特征值的已定义属性。用来描述特征值的。...角色和责任 Android 设备和 BLE 设备交互时应用的角色和职责 中央与外围设备。 GATT 服务器和 GATT 客户端。...具体的数据解析格式是根据配置文件规范执行的(是你和你的BLE 设备共同约定好的规范) 大体的过程中:开启连接,然后会触发对应的连接回调,然后发现服务,触发发现服务回调,获取服务内部的特征值,对其读写命令...读 BLE 属性 一旦我们的 Android 设备连接到了 GATT 服务器并发现了服务,我们就可以在支持的位置读取或者写入属性了。

    3.5K10

    鸿蒙开发实战案例:蓝牙实现服务端和客户端通讯

    以心率跳动值作为特征值,通过notifyCharacteristicChanged接口将心率跳动特征值广播发送给连接到本服务端并订阅了该特征值变动通知的蓝牙客户端设备。...客户端以特定服务UUID作为过滤条件扫描服务端,连接到扫描的设备后通过setCharacteristicChangeNotification接口向服务端发送‘通知心率跳动特征值变动’的请求,以便收到服务端该特征值变动的通知消息...主要有以下几点功能:发现具有特定服务的设备。 连接到设备。 发现服务。 发现服务的特征、读取给定特征的值、为特征设置通知等。...相关概念:BLE扫描:通过BLE扫描接口startBLEScan实现对BLE设备的搜索。BLE连接:通过BLE的GattClientDevice实现对BLE设备的连接、断连等操作。...接收数据:通过BLECharacteristicChange接收特征值的改变。效果图预览使用说明该功能需要两台设备,进入BLE通讯场景页面,选择当前设备是作为BLE服务端还是BLE客户端。

    1.2K10

    Window上的BLE调试工具

    它允许用户快速查看附近的BLE设备,只需点击一下即可连接,并支持按信号强度对设备进行排序。这种简化的设备发现方法可以节省时间并增强BLE开发和测试的用户体验。...· 用户友好的扫描界面· 一键式设备连接· 信号强度(RSSI)排序· 即时查看BLE设备广播3.2设备GATT信息分析一经连接,BLEDebug将会提供BLE设备的GATT信息,用户可以读取、写入和订阅不同特征的通知或指示...也可以在菜单设置——自动连接管理中输入设备的MAC地址,点击添加设备按钮设置为自动连接,已经设置为自动连接的设备可以禁用自动连接功能,可以从自动连接列表中移除。...Service”,点开某个具体的特征值,这个特征值的属性支持读,写和通知,对应右侧的读写和通知操作区域。...可在右侧窗口读取特征值,写入数据,或者订阅通知。读取及写入的数据均支持HEX形式与ASCII码形式,发送/读取的数据字节及实时速度都会自动更新。下图展示了读/写与订阅功能。

    3.7K10

    nRF Connect:BLE开发调试神器

    、NOTIFY、INDICATE等属性,定义交互方式: READ:可读取特征当前值; WRITE:可向特征写入数据(分需应答和无需应答两种模式); NOTIFY:特征值变化时,设备主动单向通知客户端...,无需确认; INDICATE:特征值变化时,设备通知客户端且需客户端确认接收。...④交互与数据获取 支持与特征的双向交互,操作方式如下: 读取特征值:点击读取按钮,获取当前状态数据; 写入特征值:输入数据(需指定编码格式),点击写入按钮修改特征值,部分特征支持无响应写入;...2.5 数据读写与配置 提供丰富的数据读写与高级配置功能,简化BLE开发流程: ①数据读写操作 步骤如下: 扫描并连接目标BLE设备; 查看设备支持的服务与特征,选择需操作的特征; 读取数据...七、注意事项 操作系统兼容性:确保使用的设备操作系统版本符合工具要求,旧版本系统可能导致部分功能无法使用; 蓝牙版本适配:部分高级功能(如长距离通信、高速数据传输)仅支持蓝牙5.0及以上版本,需确认设备蓝牙版本

    4.8K11

    onCharacteristicChanged什么情况下才会触发

    正文onCharacteristicChanged 是 BluetoothGattCallback 类中的一个回调方法,在 Android BLE(蓝牙低功耗)开发中,这个方法特别重要,它用于接收从蓝牙设备接收到的特征值变化的通知...特征值发生变化:当连接设备的特征值发生改变时,如果之前已经为该特征值启用了通知,那么 onCharacteristicChanged 回调方法会被触发。...特征值的属性设置正确:特征值的属性包括读、写、通知等。在与蓝牙设备进行通信之前,需要确保已经正确地设置了特征值的属性,以便能够接收通知。...特征值 UUID 匹配:特征值的 UUID 是用于唯一标识特征值的一个标识符。在与蓝牙设备进行通信时,需要确保已经正确地指定了要读取或写入的特征值的 UUID。...蓝牙连接状态良好:为了接收特征值变化的通知,蓝牙设备之间必须保持连接状态。如果连接断开,那么将无法触发 onCharacteristicChanged 回调。

    59710

    安卓开发系列:浅谈onCharacteristicChanged没有触发原因

    如果服务或特征没有正确发现,那么你将无法找到正确的描述符来启用通知。...BLE外设配置:有些BLE外设可能需要特定的配置才能发送通知。例如,它们可能需要你先写入某个特征值来启用通知功能。检查BLE外设的文档,确保你按照要求配置了它。...重启设备和BLE外设:有时,简单的重启设备和BLE外设可以解决连接和通知问题。...更新固件和Android版本:确保你的BLE外设固件是最新的,并且你的Android设备运行的是支持BLE的最新Android版本。...如果以上步骤都无法解决问题,你可能需要更深入地调查BLE外设的固件实现,或者考虑是否存在与特定Android设备或Android版本相关的兼容性问题。

    1.2K10

    OpenHarmony 蓝牙相关API用法

    实现了以下几点功能:发现具有特定服务的设备。连接到设备。发现服务。发现服务的特征、如何读取给定特征的值、为特征设置通知等。相关概念BLE扫描:通过BLE扫描接口实现对BLE设备的搜索。...BLE连接:通过BLE的GattClientDevice实现对BLE设备的连接、断连等操作。接收数据:通过BLECharacteristicChange接收特征值的改变。...:使用 bluetooth 来实现蓝牙的开启和BLE的扫描,然后再使用一个List显示扫描到BLE心率设备,点击连接按钮可以连接上对应的心率设备。...normal 依赖本示例需要使用设备来模拟BLE心率设备。这里使用OpenHarmony来模拟了BLE心率设备,相关代码在module - advertiser。...本示例为Stage模型,从API version 9开始支持。SDK版本号:3.2.12.1 Release,镜像版本号:OpenHarmony 3.2.12.2。

    1.2K20

    低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端

    低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端 Android对外模模式(peripheral)的支持 从Android5.0开始才支持 关键术语和概念 以下是关键BLE术语和概念的摘要...ATT经过优化,可在BLE设备上运行。 为此,它使用尽可能少的字节。 每个属性由通用唯一标识符(UUID)唯一标识,UUID是用于唯一标识信息的字符串ID的标准化128位格式。...描述符 - 描述符是描述特征值的定义属性。 例如,描述符可以指定人类可读的描述,特征值的可接受范围或特征值的特定的测量单位。 服务 - 服务是一个集合的特点。...角色和职责 以下是Android设备与BLE设备互动时适用的角色和职责: 中央与外围。 这适用于BLE连接本身。 处于中心角色的设备扫描,寻找广告,并且外围角色中的设备进行广告。...这决定了两个设备在建立连接后如何相互通信。 BLE权限 首先,需要在manifest中声明使用蓝牙和操作蓝牙的权限 在应用程序清单文件中声明蓝牙权限。

    2.7K00

    iOS 蓝牙4.0开发使用(内附 Demo)

    蓝牙4.0因为低耗电,所以也叫做低功耗蓝(BLE),它将三种规格集一体,包括传统蓝牙技术、高速技术和低耗能技术。 这篇文章用来介绍BLE 4.0的使用以及相关问题的解决。...二:BLE的两种模式 BLE的两种模式分为CBCentralMannager 中心模式 和CBPeripheralManager 外设模式,在这里主要和大家分享CBCentralMannager 中心模式的开发和使用...订阅特征的通知 7.1 根据特征读取数据 三:BLE开发步骤 在介绍CBCentralMannager 中心模式开发步骤之前,首先需要对项目进行如下配置: #import "ESPFBYBLEHelper.h...const kNotifyServerUUID = @"FF03"; // 写服务 static NSString * const kWriteServerUUID = @"FFFF"; // 通知特征值...didUpdateValueForCharacteristic /** 根据特征读到数据 @param peripheral 读取到数据对应的设备 @param characteristic 特征

    2.3K11

    HarmonyOS学习路之开发篇—网络与连接(蓝牙开发 一)

    蓝牙是短距离无线通信的一种方式,支持蓝牙的两个设备必须配对后才能通信。HarmonyOS蓝牙主要分为传统蓝牙和低功耗蓝牙(通常称为BLE,Bluetooth Low Energy)。...BLE BLE设备交互时会分为不同的角色: 中心设备和外围设备:中心设备负责扫描外围设备、发现广播。外围设备负责发送广播。...通常发送广播的外围设备作为服务端,负责扫描的中心设备作为客户端。 HarmonyOS低功耗蓝牙提供的功能有: BLE扫描和广播:根据指定状态获取外围设备、启动或停止BLE扫描、广播。...BLE中心设备与外围设备进行数据交互:BLE外围设备和中心设备建立GATT连接后,中心设备可以查询外围设备支持的各种数据,向外围设备发起数据请求,并向其写入特征值数据。...BLE外围设备数据管理:BLE外围设备作为服务端,可以接收来自中心设备(客户端)的GATT连接请求,应答来自中心设备的特征值内容读取和写入请求,并向中心设备提供数据。

    1.6K40

    APP蓝牙通信的开发

    1.明确需求功能需求:确定需要实现的功能,如数据传输、设备控制等。设备兼容性:确保支持目标设备的蓝牙版本(如BLE)。2.选择开发平台iOS:使用CoreBluetooth框架。...4.蓝牙设备扫描扫描设置:确定扫描参数,如扫描时间、设备过滤条件。设备发现:处理发现的设备信息,如名称、信号强度。5.设备连接连接流程:包括发起连接、配对(如需要)和建立通信。...6.服务与特征值服务发现:获取设备的GATT服务列表。特征值操作:读取、写入或订阅特征值。7.数据传输数据格式:定义数据格式和协议。传输方式:选择合适的传输方式,如写入、通知或指示。...9.用户界面设备列表:展示扫描到的设备。连接状态:显示连接状态和数据传输进度。10.测试与调试设备测试:在不同设备上测试兼容性。场景测试:模拟各种使用场景,如信号弱、设备断开。...总结开发蓝牙通信功能需从需求分析到测试部署全面考虑,确保功能稳定、用户体验良好。

    73510

    蓝牙在小程序中的应用

    (3) 设备地址:每个蓝牙设备都有一个设备地址deviceId,但是安卓和IOS差别很大,安卓下设备地址就是mac地址,但是IOS无法获取mac地址,所以设备地址是针对本机范围有效的UUID,所以这里需要注意...创建BLE连接 closeBLEConnection 关闭BLE连接 getBLEDeviceServices 获取设备的服务列表,每个蓝牙设备都有一些服务 getBLEDeviceCharacteristics...获取蓝牙设备某个服务的特征值列表 readBLECharacteristicValue 读取低功耗蓝牙设备的特征值的二进制数据值 writeBLECharacteristicValue 向蓝牙设备写入数据..._1508314965035.png] 由于IOS无法获取Mac地址所以这里需要区分两个场景 a) 安卓:安卓下可以根据Mac地址来搜索设备,或者跳过此步直接连接到设备。...notify特征值ID,写ID和读取ID (7) 获取特征值ID以后就可以开启notify通知模式,同时开启监听特征值变化消息 [1508315245679_1026_1508315269498.

    7.4K50

    IOS开发:UniAPP实现BLE低功耗蓝牙开发1

    UniAPP实现BLE低功耗蓝牙开发 1、Uni-app介绍 2、Uni-app优点 3、BLE开发流程 1、Uni-app介绍 uni-app 是使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码...2、Uni-app优点 3、BLE开发流程 1、初始化蓝牙 uni.openBluetoothAdapter(OBJECT) 2、开始搜索蓝牙设备 uni.startBluetoothDevicesDiscovery...(OBJECT) 5、连接低功耗蓝牙设备 uni.createBLEConnection(OBJECT) 6、获取蓝牙设备所有服务 uni.getBLEDeviceServices(OBJECT)...7、获取蓝牙特征 uni.getBLEDeviceCharacteristics(OBJECT) 8、启用蓝牙设备特征值变化时的 notify 功能 uni.notifyBLECharacteristicValueChange...(OBJECT) 9、监听低功耗蓝牙设备的特征值变化 uni.onBLECharacteristicValueChange(CALLBACK) 10、写入蓝牙 uni.writeBLECharacteristicValue

    2.2K10

    QT应用编程: 编写低功耗BLE蓝牙调试助手(Android系统APP)

    BLE低功耗蓝牙一般不能直接使用手机进行连接,手机蓝牙默认都是工作在传统蓝牙模式,无法直接连接BLE低功耗蓝牙信号,需要使用专用的APP配置手机蓝牙模式,方可进行通信。...connect(m_control, SIGNAL(connected()),this, SLOT(BlueDeviceConnected())); //当控制器从远程低功耗设备断开时发出此信号...InvalidBluetoothAdapterError) { ui->plainTextEdit_BluetoothInfiShow->insertPlainText("传递给此类构造函数的本地蓝牙设备无法找到...CharacteristicReadError==newErrorr) { ui->plainTextEdit_BluetoothInfiShow->insertPlainText("尝试读取特征值失败...\n"); // } } //当控制器从远程低功耗设备断开时发出此信号。

    5.9K30

    MASA MAUI Plugin 安卓蓝牙低功耗(二)蓝牙通讯

    换句话说我们可以通过这个特征给设备发送数据,而且可以通过订阅该特征值变化事件,来获取设备通过蓝牙的返回信息。与 BLE 设备交互的第一步便是连接到 GATT 服务器。...想对蓝牙进行写入操作,当然需要先找到蓝牙设备的服务id和特征值id才行。...打开蓝牙监听 以上一系列操作我们已经可以拿到具体的这个设备的服务和具体的特征值了,对于BLE设备,大部分都是通过Notify属性进行广播的。...一个BLE设备如果有通知的属性,那么他一定会有描述符,打开或者关闭通知都需要通过描述符写入指令来控制,所有对特征值的操作然后通过WriteValueAsync->PlatformWriteValue来实现...、获取主服务和特征值、写入数据、打开通知监听,最后还剩一个就是监听特征值的变化,为某个特征启用通知后,如果远程设备上的特征发生更改(我们收到消息),则会触发 onCharacteristicChanged

    3K20
    领券