完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想必大家都很想问一个问题,蓝牙数据到底是怎么进行交互的,下面我试着讲清楚这一流程和蓝牙里面的基本概念。
首先,罗列一下蓝牙工作的四种模式: - 从机模式: Peripheral 广播,等待被扫描,可连接 在连接中作从机 代表例子:心率带,智能手环手表 - 主机模式: Central 无广播,可扫描周围广播设备,可以要求与广播设备的连接。 在连接中做主机 -广播模式 Broadcaster 广播,不可连接 代表例子: 温控器,beacon设备 -观察者模式 Observer 无广播,可扫描周围广播设备,不能要求与广播设备的连接 例子: 智能网关 通常情况下我们设计的产品通常是Peripheral模式和手机连接(手机作为master模式),所以下面以peripheral为重点分析。 回到上一篇《通俗易懂讲蓝牙协议栈软件框架》一文谈到的一个ATT层,如上图所示,ATT层定义了两个概念,Client和Server。Server通常建立在Peripheral设备上,Client通常建立在Mater上。简单来说,Peripheral模式建立了一个小型数据库,Client可以通过ATT指令访问数据库进行数据读写。 写到这里,关键问题来了,小型数据库的数据是怎么定义的? 非常重要的概念来了,Profile,Service,Charactertic,这几个词没法翻译。。翻译出来就变味了。 我们来看图说话,profile是一个大类,SIG有定义几个标准的大类profile,比如心率,防丢失,靠近检测,通常一个peripheral设备可以有一个或者多个profile,取决于应用。 大类定好了再来一层一层细化,profile下面又分为不同的Service,每一个服务里面对应一个可控的对象,每一个对象我们起一个名字叫Characteristic,每一个Characteristic下面包含对该对象的说明,数据和属性(只读或者只写)。 如上图所说,我们拿心率profile为例,一个标准的Heart rate Profile(SIG规定)包含两个service,一个用于手机主端读取service数据(从机读取心率数值,写入该service,这样主端可以在任何时候去读取),一个service用于对该心率设备进行说明。 最后做个总结,我们把Profile放在GATT 层,用户通过ATT指令进行访问读写,让整个两个不同模式的设备进行数据交互。 |
|
|
|
只有小组成员才能发言,加入小组>>
948 浏览 1 评论
1099 浏览 1 评论
12514 浏览 0 评论
5926 浏览 3 评论
17722 浏览 6 评论
1026浏览 1评论
1021浏览 1评论
948浏览 1评论
4780浏览 1评论
1099浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 20:40 , Processed in 0.990061 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号