1.关于服务与特征值的简述
之前说到蓝牙的连接过程,那蓝牙连接之后具体是如何传数据的呢。这里做一下简要说明。
蓝牙4.0是以参数来进行数据传输的,即服务端定好一个参数,客户端可以对这个参数进行读,写,通知等操作,这个东西我们称之为特征值(characteristic),
但一个参数不够我们用,比如我们这个特征值是电量的值,另一个特征值是设备读取的温度值。
那这时候会有多个特征值,并且我们还会对它们分类,分出来的类我们称之为服务(service)。
一个设备可以有多个服务,每一个服务可以包含多个特征值。为了方便操作,每个特征值都有他的属性,例如长度(size),权限(permission),值(value),描述(descriptor),如下图。
2.ATT与GATT
我们刚才介绍服务与特征值,那具体我们是怎么去实现的呢.
蓝牙4.0版本推出了低功耗规范,引入了两个核心协议:ATT(Attribute Protocol)和GATT(Generic Attribute Protocol).这两个协议主要目标是BLE,但是也可以运行在传统蓝牙上(BR/EDR)。
ATT主要是规定了"属性"的定义,GATT则是将这些"属性"包装成我们上面所讲的服务、特征值等。
那我们是怎么搭建起来我们的服务的呢?
大概可以概述为,由一个个属性搭建起来的东西。如下图,每一个属性就会告诉使用者说,我是什么,我带有什么,你能对我做什么,即描述,值,权限
序号
描述
权限
值
属性1
我是 服务A的开头
只读
服务号0001
属性2
我是 特征值1的开头
只读
特征值1的值放在属性3里

本文介绍了蓝牙4.0中的服务与特征值概念,讲解了如何通过ATT和GATT协议实现数据传输。服务由多个特征值组成,每个特征值拥有属性,如长度、权限和值。BLE利用属性表进行数据组织,其中Handle作为索引,Type定义属性类型,Permission设置访问权限,Value存储实际数据。
最低0.47元/天 解锁文章
6392

被折叠的 条评论
为什么被折叠?



