可穿戴设备(CC2541)上微信(3)

原创 2015年07月08日 09:29:23

微信規定了藍牙 BLE 需要有以下兩個特點。

1:可以傳輸無限長度的數據。

2:雙工,讀寫可以並發,互不干擾。

藍牙無法傳輸無限長度的數據,為了實現這個目的,需要定議一個規範。     

ps:当然是把数据截成奋斗奋斗奋斗奋斗奋斗的,然后再发送了。。。要不然怎么办。。。就是下面的这个东东了。。。

注:把一个特征值一次传输的数据,称为一帧(不同类型的特征值一次传输的数据长度是不一样的)。


藍牙設備需暴露兩個特徵值﹝Characteristics﹞:Write 特徵值,Indication 特徵值。藍牙設備從 Write 特徵值接受數據,從 Indication 特徵值發送數據。

UUID 0xFEC8  Properties:Indicate            

UUID 0xFEC7  Properties:Read Write   


蓝牙的数据传输是通过特征值实现的,那既然已经有了接受和发送的特征值,那就可以读写了数据了。。。

蓝牙设备写过程:

1. 分帧:假设蓝牙手环上有1k数据,要发给手机微信。由于一个特征值长度有限(如20个字节),显然需要分多次才能传输完成。1k 数据,要分成 1024 字节/ 20 字节=51 个帧。剩下的 4 个字节,不足一帧(20个字节),需补齐为一帧并对剩下的 16 个字节赋 0。总共是 52 帧。

2. 发送第一个帧:把第一个帧的内容放入特征值里面。然后通知手机读取数据,通知有两种方式,Indication 和 notify,这里使用 Indication 方式,即带响应的通知。当通知完成的时候,可以认为手机已经读完数据。这就完成了发送第一个帧。

3. 按照 2 的步骤,依次发送剩下的帧。

按照此方法可以发送无线长度的数据。

蓝牙设备读过程:                                                                                              

当蓝牙设备发现读特征值收到数据的时候,就接收数据,并追加到设备的 buf 里。

 

注意:蓝牙设备必须等微信 app 订阅了 Characteristics 之后,才能 indicate 数据,否者会造成设备发送数据丢失的问题。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Ogre全屏下自制输入法状态框的实现~~~

思路一,使用新的支持win7的DXD9 的Overlay http://msdn.microsoft.com/en-us/library/dd797814(VS.85).aspx 加钩子思路二,直接用...

可穿戴设备(CC2541)上微信(4)

Source Code 加密

可穿戴设备(CC2541)上微信(7)

一、 微信客户端和 BLE 设备通信流程 1. 微信通过聊天窗口向 BLE 设备发送数据,数据流程如下: 微信客户端 ---> 微信服务器 ---> 客户服务器 ---> 微信服务器 ---> 微信客...

CC2541 连接微信(1)——微信 AirSync 和 微信精简协议 介绍

微信 AirSync 和 微信精简协议 介绍

可穿戴设备(CC2541)上微信(2)

adverData 和 scanResponseData

可穿戴设备(CC2541)上微信(6)

读取设备的 MAC 地址: GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);#define GAPROLE_BD_ADDR             ...

可穿戴设备(CC2541)上微信(5)

1. 当 BLE 设备与微信连接后,微信客户端通过下面的程序向 BLE 设备发送数据: static bStatus_t wechatIOT_WriteAttrCB( uint16 connHandl...

hibernate 缓存机制

缓存的方式有四种,分别为:   CacheConcurrencyStrategy.NONE   CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)