zoukankan      html  css  js  c++  java
  • 微信蓝牙外设协议 1

    协议支持经典蓝牙和4.0 BLE 蓝牙,眼下支持 ios 和 andriod 两个系统,兴许会扩展到其它系统。

    PS:在 IOS 上比較稳定。在 Andriod 尚不稳定。由于 Andriod 手机的蓝牙芯片都不同。所以有些手机的蓝牙在运行某个命令的时候耗时太久。所以就连接不上。不稳定。

    IOS 手机使用的都是同一款蓝牙芯片,所以非常稳定。


    一、 总体架构

                                                                 

    厂商server和外设,由厂商开发完毕。

    微信会提供server的接口以对接厂商的server。会提供手机的接口(如本文规定的蓝牙协议)以对接厂商的外设。


    二、 主要功能

    1. 该协议打通了设备和厂商server之间的数据链路。也就是支持将设备上的数据发送到厂商的server上。也支持将厂商的数据发送到设备。

    2. 厂商的数据对于微信来说,是黑盒,微信不正确设备数据做分析。

    3. 该协议也打通了设备和微信server之间的数据链路。

    4. 设备和微信server之间的数据格式由微信规定,比如登录。新消息通知等。


    三、 蓝牙BLE 模拟成流

    微信规定了蓝牙BLE 设备须要先模拟成流(即stream,输入输出流)。经典蓝牙的RFCOMM,就是一个流。流具有的特性有:

    a. 能够传输无限长度的数据

    b. 双工。读写能够并发,互不干扰。


    显然,蓝牙BLE 无法传输无限长度的数据。为了实现这个目的。须要定义一个规范 ----- 那就是“帧”


        以上内容都属于烂大街的东西了,没有什么实用的详细的东西,仅仅是对微信蓝牙外设做个大致的介绍。我从去年听到这个东西,知道今年 7 月份才開始正式接触,刚開始非常难上手。代码也比較复杂,学起来比較困难。

    可是总的来说这就是一个 BLE 设备和手机 APK 之间的连接和数据交换,跟我曾经做的 BLE 设备与京东 APK 对接本质是一样的。可是还有不一样的地方,那就是微信要用到的 MAC 和 MD5。微信毕竟和其它简单的 APK 有差别。有加密数据和不加密数据,如今大多都在用不加密模式,微信仅仅是做一个接口,把数据从 BLE 设备终于传到厂商server,假设使用加密模式的话,微信会对数据有个处理的过程。有些厂商是不允许的。



  • 相关阅读:
    CSS Sprite笔记
    前端分页页码静态部分制作
    有趣的网页小部件笔记
    Lintcode 85. 在二叉查找树中插入节点
    Lintcode 166. 主元素
    网页失去焦点标题变化效果
    Lintcode 166. 链表倒数第n个节点
    Lintcode 157. 判断字符串是否没有重复字符
    Lintcode 175. 翻转二叉树
    Lintcode 372. O(1)时间复杂度删除链表节点
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7372973.html
Copyright © 2011-2022 走看看