Ble服务端传输消息有两个常用手段,notification和indication。那么这两者之间有什么区别呢?

Notification 不需要应答,所以服务端发送的消息,它自己并不知道消息是否发送成功。

Indication 需要客户端应答,每次服务端发送完数据都需要客户端发送应答消息。其中有一点很重要,如果你发送的

indication客户端没有应答,你是不能再次发送indication的

需要注意的是,服务端一开始是无法直接发送Indication和Notification。首先必须是客户端通过往服务端的CCCD特征(clinet characteristic configuration descriptor)

写入值来使能服务端的这两个功能Notification/Indication,这样服务端才能发送。这也是为什么我们在看服务端的profile时候是有cccd特征的原因。

总结一下,Notification是一种不可靠传输,indication则是可靠传输。但是可靠传输意味着传输数据的速率降低,开发ble程序如果对数据可靠性要求不是很高的情况下就使用Notification吧。

参考信息:

1 https://www.nxpic.org.cn/module/forum/thread-622329-1-1.html

ble的notification和indication的区别和联系的更多相关文章

  1. Android BLE API: GATT Notification not received

    When setting the value to the descriptor instead of putting descriptor.setValue(BluetoothGattDescrip ...

  2. 四、BLE(中)

    1.1       GATT Manager GATT MGR模块管理所有的GATT服务,同时也是连接GATT模块与GATT ServiceS模块的桥梁. 1.1.1    主要功能模块 先来看一张该 ...

  3. [蓝牙] 5、Battery Service module

    Detailed Description This module implements the Battery Service with the Battery Level characteristi ...

  4. [蓝牙] 4、Heart Rate Service module

    Detailed Description Heart Rate Service module. This module implements the Heart Rate Service with t ...

  5. Bluetooth ATT介绍

    目录 1 介绍 2 详细内容 2.1 Attribute Type 2.2 Attribute Handle 2.3 Attribute Handle Grouping 2.4 Attribute V ...

  6. iOS 面试总结 一

    iOS 开发工程师之面试总结一 好久没有出去面试了,大概一年的时间都很稳定,最近出去面试感觉心里特别慌,没有了当时的勇气了,其实还是感觉自己的准备不是特别的充分,这是主要原因. 这段时间待得太安逸没了 ...

  7. 据说是百度ios面试题

    百度面试题:   一面:知识点 Objective C runtime library: Objective C的对象模型,Block的底层实现结构,消息发送,消息转发,内存管理 CoreData : ...

  8. ATT GATT Profile

    Bluetooth: ATT and GATT Bluetooth 4.0, which includes the Low Energy specification, brings two new c ...

  9. 百度ios 开发面试题

    百度移动云可穿戴部门的面试经历,面试官都非常热情友好,一上来到弄的我挺不好意思的.下面记录一下自己的面试过程,因为我真的没啥面试经验,需要总结下. 1面 Objective C runtime lib ...

  10. iOS面试3

    转:http://studentdeng.github.io/blog/2014/02/11/baidu-interview/ 百度面试 FEB 11TH, 2014 | COMMENTS 百度移动云 ...

随机推荐

  1. Linux进程间通信 [补档-2023-07-27]

    Linux进程间通信 10-1 简介 ​ 在Linux下,进程之间相互独立,每个进程都有自己不同的用户地址空间.任何一个进程的全局变量在另 一个进程中都看不到,所以进程和进程之间不能相互访问.如果非要 ...

  2. 创建多线程方式(Java)

    一.创建自定义线程类继承Thread 自定义线程类代码 package com.demo05; public class MyThread extends Thread { @Override pub ...

  3. element实现大图预览和图片动态加载

    element的el-image组件支持大图预览模式,但需要和小图模式配合使用,项目中刚好有需求需要直接使用大图预览并且需要支持图片的动态加载,研究了一下el-image组件的源码发现el-image ...

  4. STM32CubeMX教程31 USB_DEVICE - HID外设_模拟键盘或鼠标

    1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 ...

  5. 洛谷P1923 求第K小的数 研讨关于输入输出效率的问题(scanf and cin ,printf and cout)

    最简单的思想就是将这n个数从小到大排序,然后直接输出下标为K的数,不用想肯定会超时,三个测试点过了,另外两个超时. 那么我想的就是,既然全排序会超时,有没有什么方法可以不用全排序也可以拿出第K小的数呢 ...

  6. SuperObject 的创建类型重大发现

    原来每当到自己创建数组加对象的时候就很头疼,原来是这样搞的,这次是清晰了 向数组里增加对象就用这个了: MySo.AsArray.Add(SO('{"爱好":["编程&q ...

  7. [JVM]逃逸分析

    逃逸分析 JVM的内存分配策略 首先回顾一下JVM的内存分配策略. JVM的内存包括方法区.堆.虚拟机栈.本地方法栈.程序计数器.一般情况下JVM运行时的数据都是存在栈和堆上的.栈用来存放一些基本变量 ...

  8. webpack学习笔记(二)核心概念理解及基础配置

    上一篇文章 记录了 webpack 初次安装与基础使用,本篇则是记录一下如何使用webpack构建一个比较完整,基础的项目 1. webpack 的4个核心概念 入口(entry):选择项目构建的入口 ...

  9. 开源.NetCore通用工具库Xmtool使用连载 - 发送短信篇

    [Github源码] <上一篇> 介绍了Xmtool工具库中的发送邮件类库,今天我们继续为大家介绍其中的发送短信类库. 发送短信就像发送邮件一样,在软件系统中使用非常普遍,甚至比发送邮件还 ...

  10. Linux 中iostat 命令详解

    iostat命令详解 iostat 主要是统计 磁盘活动情况. iostat有以下缺陷: iostat的输出结果大多数是一段时间内的平均值,因此难以反映峰值情况iostat仅能对系统整体情况进行分析汇 ...