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,假设使用加密模式的话,微信会对数据有个处理的过程。有些厂商是不允许的。



  • 相关阅读:
    POJ 2018 二分
    873. Length of Longest Fibonacci Subsequence
    847. Shortest Path Visiting All Nodes
    838. Push Dominoes
    813. Largest Sum of Averages
    801. Minimum Swaps To Make Sequences Increasing
    790. Domino and Tromino Tiling
    764. Largest Plus Sign
    Weekly Contest 128
    746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7372973.html
Copyright © 2011-2022 走看看