zoukankan      html  css  js  c++  java
  • CH579/CH57x蓝牙主机使用注意事项

    BLE主机的连接到收发数据的过程

    BLE的连接过程,一般的典型过程是按照 "扫描>连接>服务发现>使能cccd>发送接收数据"

    1,扫描

    这里的扫描,就是主机端开启扫描后,去得到从机的广播数据,能够得到的数据有:

    • MAC地址
    • 31字节广播或者扫描回复数据(名称,自定义信息都在这里面,通常需要做解析)
    • 信号强度

    在扫描时候,我们既然可以得到这些数据,我们就可以根据这些来决定哪些从机是我们需要连接的从机,比如通过名称,或者自定义的信息

    2,连接

    这里的连接,实际上是根据上面扫描过程中,得到的MAC地址以及MAC地址类型进行连接

    3,service和characteristic的发现

    连上以后,要进行相关的service和characteristic发现,来得到行营的GATT handle,因为通信时候,要根据这些handle来收发数据,类似以太网的TCP/UDP 端口号之类的

    4,使能cccd(开启notify)

    这里的使能CCCD, 是当从机的characteristic具备notify/indicate主动发数据给主机的属性时候,这时候主机端往往需要主动去使能这些,否则从机不能够主动发送(当然从机也可以在本机主动开启)

    5,接收或者发送数据

    write/write_no_respone

    通常是主机对从机的操作,主机给从机发数据一般用这个命令,这一步依赖上面查到的gatt handle,当然,如果是事先知道这些handle,是可以直接发送,而不需要进行service和characteristic的发现
    其中write_no_respone 不需要从机协议栈回复,这样连接开销小一些,在要求速度的场景,往往使用这个.

    read

    通常是主机对从机的操作,这一步依赖上面查到的gatt handle,当然,如果是事先知道这些handle,是可以直接发送,而不需要进行service和characteristic的发现

    notify /indicate

    通常这是从机对主机的操作,从机给主机发送数据一般用这个命令,由于主机是被动接收,所以接收时候往往是根据回掉函数得到相应的数据
    但是notify /indicate 往往需要事先使能cccd从机那边才能够发送出来数据,所以根据实际情况,来执行 使能cccd(开启notify)
    根据上面查到的characteristic value的gatt handle 用wrtie
    其中notify不需要主机协议栈回复,这样连接开销小一些,在要求速度的场景,往往使用这个

  • 相关阅读:
    【UVA1515 算法竞赛入门指南】 水塘【最小割】
    【uva1658 算法竞赛入门经典】海军上将【费用流】
    【UVA11613 训练指南】生产销售规划 【费用流】
    【UVA10079 训练指南】收集者的难题【最大流】
    【LA2531 训练指南】足球联赛 【最大流】
    【LA2957 训练指南】运送超级计算机【二分,最大流】
    「高等数学学习笔记 DAY2」
    「高等数学学习笔记 DAY1」
    「CF1325D Ehab the Xorcist」
    「CF1325C Ehab and Path-etic MEXs」
  • 原文地址:https://www.cnblogs.com/iot-fan/p/13607209.html
Copyright © 2011-2022 走看看