根据TI BLE1.4.0的介绍,Indicate是有ACK的。

Q1:那么如果我用Notify,是否可能会丢数据呢?

比如我用一个charisticrist 连续notify100个数据,中间是否有可能丢数据?

我实验了很多次,也没有发现有丢数据。

Q2:Indicate怎么使用呢?我看了thermometer的例子,但是感觉他仅仅是在定义

static gattAttribute_t thermometerAttrTbl[] = 时,用了GATT_PROP_INDICATE属性。

但在实际发送时,仍然用的是GATT_Notification啊

Feng Xu3,

Q1:BLE是可以基于link layer层保证空中数据不丢失的,notification和indication都是基于GATT的,取决于你在应用层如何对这些数据处理,如果你对notification的数据处理不及时,是会被后续数据冲击丢失的。

Q2:indication 用的是GATT_Indication().

Hi Y,

非常感谢你的回答。

就是说,使用notify,BLE的link layer本身会保证数据不会丢失,但是在central节点,数据如果不被及时读走,会被冲掉?

我不知道如果我用Notify方式的话,APP那端能不能够及时读走数据,这要如何确定呢?

还是说只有使用indication才能够保证不丢数据?

另外,如果使用read的方式,数据传输速度能够比notify高吗?

谢谢!

Frank

Feng Xu3,

这个完全取决于你发Notification的速度和APP那端的处理方法,两边都是你自己控制的,问题应该不大。

read的方式应该速度比Notification要低。

Hi Y,

那么Indicate与Notify相比,如果APP那端能及时处理,是否Indicate能达到与Notify同样的速率?

谢谢!

Frank

回复 Feng Xu3:

Feng Xu3,

这是个好问题。

这么说吧,如果在连接参数相同的情况下(主要指connection interval),并且APP处理得当,那肯定是Notification快,因为indication要等回复才能发下一个包。

Hi Yan,

请问您说的indication等回复才能发下一个包,是指link layer前一个packet已经发送成功了的前提下,也不会再发下一个packet,而是要等主机端对数据进行应用层的逻辑处理完成,并得到主机端的反馈后才发下一个packet,我理解的意思对吗?

如果对的话,那么write with response是不是也可以同理的反向理解。

我个性签名档的博客地址,《CC2541之notify》、《CC2541之indicate》。

1、博客:http://blog.csdn.net/feilusia
2、香瓜BLE之CC2541:127442605
3、香瓜BLE之CC2640R2F:557278427
4、香瓜单片机之职场交流:450154342
5、《简单粗暴学蓝牙5》下载地址:https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

Notify 与 Indicate的区别相关推荐

  1. Java中notify和notifyAll的区别 - 何时以及如何使用

    Java  notify   vs notifyAll notify和notifyAll方法之间有什么区别是棘手的Java问题之一! Condition 是个什么玩意? 提几个问题,从问题中去了解去学 ...

  2. notify 和 notifyAll的区别

    6.notify 和 notifyAll的区别 notify方法只唤醒一个等待(对象的)线程并使该线程开始执行.所以如果有多个线程等待一个对象,这个方法只会唤醒其中一个线程,选择哪个线程取决于操作系统 ...

  3. Notify与notifyall的区别

    Notify与notifyall的区别 notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争. notify则文 ...

  4. Java中notify() 和 notifyAll()的区别

    等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁后,进入到了该对象的等待池,等待池中的线程不会去竞争该对象的锁. 锁池:只有获取了对象的锁,线程才能执行对象的 sync ...

  5. notify和notifyAll的区别,notify死锁问题

    具体讲解参照博客区别 下面补充一个例子,来说明,使用notify会产生死锁,但是使用notifyAll不会. 原题为lleetcode 1195 大体意思是:四个线程,调用同一个对象的四个不同方法,然 ...

  6. notify()和notifyAll()的区别

    1.notify()只能唤醒一个wait()线程,然而notifyAll()可以唤醒多个wait()线程: 2.两个都必须在synchronized中使用,过程不释放锁: 3.当每个线程都有特定锁的时 ...

  7. Java多线程——notify()与notifyAll()的区别

    notify(): 唤醒在此对象监视器上等待的单个线程.如果所有线程都在此对象上等待,则会选择唤醒其中一个线程.选择是任意性的,并在对实现做出决定时发生.线程通过调用其中一个 wait 方法,在对象的 ...

  8. java notify什么意思_Java notify和notifyAll的区别和相同

    经常在往上逛,关于在java中notify和notifyAll,经常有人有以下的说法: notify只会通知一个在等待的对象,而notifyAll会通知所有在等待的对象,并且所有对象都会继续运行 并且 ...

  9. Java并发编程—notify和notifyAll有什么区别?

    原文作者:知乎用户 原文地址:https://www.zhihu.com/question/37601861/answer/145545371 著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

最新文章

  1. 阿里开发者招聘节 | 面试题14:如何实现两金额数据相加(最多小数点两位)...
  2. 【Spring源码分析系列】bean的加载
  3. 希尔排序c语言,希尔排序(C/C++实现)
  4. 配置kali linux
  5. 数据结构之自建算法库——链栈
  6. Springsecurity搭建自定义登录页面
  7. android服务的应用,Android学习指南之十四:Service详解及应用实例
  8. 重装xp后恢复wubi安装的ubuntu
  9. NYOJ2-括号配对问题
  10. 【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】
  11. [转载]辐射定标、辐射校正、几何校正的区别
  12. 营业执照生成_0跑动,3步注册,48小时拿证!金山发出首张全程电子化登记营业执照!...
  13. 小米max刷鸿蒙,小米Max刷recovery教程 小米Max第三方recovery下载
  14. 内网渗透思路学习——靶场实战——暗月项目七
  15. MongoDB应用记录
  16. 更新到PS CC 2019 缩放的时候 按住shift变成不规则缩放了 反而不按住shift是等比例缩放...
  17. 我们都希望有一部属于自己的电脑。
  18. 在天翼网关2.0上如何使用自己的路由器
  19. 基于机器学习的天气数据分析与预测系统
  20. Quorum NWR

热门文章

  1. boost中regex使用时出现的问题
  2. C#运控框架 雷赛运动控制 DMC系列 运动控制项目 C#源码
  3. vpp之浅谈插件和使用
  4. 人工智能到底是什么?AI可以涵盖哪些领域?
  5. Windows10 常用快捷键
  6. 如何进入/home/user/.wine
  7. JS数组合并的7种常见方法
  8. python中open()函数里中文处理
  9. export和import
  10. golang的timer的一些坑