理解Profiles, Services,Characteristics,UUID等值

时间:2024-03-31 22:15:01

理解协议栈中,Profiles, Services,Characteristics,UUID等值的概念。

在这之前我们得先了解一下一些专业词汇:

1、profile 

profile可以理解为一种规范,一个标准的通信协议,它存在于从机中。蓝牙组织规定了一些标准的profile,例如 HID OVER GATT ,防丢器 ,心率计等。每个profile中会包含多个service,每个service代表从机的一种能力。

2、service

service可以理解为一个服务,在ble从机中,通过有多个服务,例如电量信息服务、系统信息服务等,每个service中又包含多个characteristic特征值。每个具体的characteristic特征值才是ble通信的主题。比如当前的电量是80%,所以会通过电量的characteristic特征值存在从机的profile里,这样主机就可以通过这个characteristic来读取80%这个数据

3、characteristic

characteristic特征值,ble主从机的通信均是通过characteristic来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。

4、UUID

UUID,统一识别码,我们刚才提到的service和characteristic,都需要一个唯一的uuid来标识

 

  整理一下,每个从机都会有一个叫做profile的东西存在,不管是上面的自定义的simpleprofile,还是标准的防丢器profile,他们都是由一些列service组成,然后每个service又包含了多个characteristic,主机和从机之间的通信,均是通过characteristic来实现。

 

 

 

GATT 事务是建立在嵌套的Profiles, Services 和 Characteristics之上的,如下图所示:
理解Profiles, Services,Characteristics,UUID等值

  • Profile Profile 并不是实际存在于 BLE 外设上的,它只是一个被 Bluetooth SIG 或者外设设计者预先定义的 Service 的集合。例如心率Profile(Heart Rate Profile)就是结合了 Heart Rate Service 和 Device Information Service。所有官方通过 GATT Profile 的列表可以从这里找到。

  • Service Service 是把数据分成一个个的独立逻辑项,它包含一个或者多个 Characteristic。每个 Service 有一个 UUID 唯一标识。 UUID 有 16 bit 的,或者 128 bit 的。16 bit 的 UUID 是官方通过认证的,需要花钱购买,128 bit 是自定义的,这个就可以自己随便设置。

官方通过了一些标准 Service,完整列表在这里。以Heart Rate Service为例,可以看到它的官方通过 16 bit UUID 是 0x180D,包含 3 个 Characteristic:Heart Rate Measurement, Body Sensor Location 和 Heart Rate Control Point,并且定义了只有第一个是必须的,它是可选实现的。

  • Characteristic 在 GATT 事务中的最低界别的是 Characteristic,Characteristic 是最小的逻辑数据单元,当然它可能包含一个组关联的数据,例如加速度计的 X/Y/Z 三轴值。

与 Service 类似,每个 Characteristic 用 16 bit 或者 128 bit 的 UUID 唯一标识。你可以免费使用 Bluetooth SIG 官方定义的标准 Characteristic,使用官方定义的,可以确保 BLE 的软件和硬件能相互理解。当然,你可以自定义 Characteristic,这样的话,就只有你自己的软件和外设能够相互理解。

举个例子, Heart Rate Measurement Characteristic,这是上面提到的 Heart Rate Service 必需实现的 Characteristic,它的 UUID 是 0x2A37。它的数据结构是,开始 8 bit 定义心率数据格式(是UINT8 还是 UINT16?),接下来就是对应格式的实际心率数据。

实际上,和 BLE 外设打交道,主要是通过 Characteristic。你可以从 Characteristic 读取数据,也可以往 Characteristic 写数据。这样就实现了双向的通信。所以你可以自己实现一个类似串口(UART)的 Sevice,这个 Service 中包含两个 Characteristic,一个被配置只读的通道(RX),另一个配置为只写的通道(TX)。

 

       上面这段内容介绍,是网上一名博友介绍的,他介绍的很清楚,但是刚开始接触蓝牙的话,看概念介绍,确实有些抽象,我利用一个软件,BLE TOOL给大家形象的介绍一下Profiles, Services,Characteristics,UUID等值的概念。

1. 打开BLE TOOL工具之后,点击搜索,这个工具会列出当前环境里的蓝牙设备,如果环境里面有蓝牙设备的话,会出现一项蓝牙设备的信息。界面如下,每部分代表的概念,已经在界面中,标的很清楚了。里面有scanRecord,mac地址,蓝牙名称,RSSI值等。

理解Profiles, Services,Characteristics,UUID等值

2。点击之后,会出现如下界面,这个界面是给蓝牙设备发送数据的界面。

理解Profiles, Services,Characteristics,UUID等值

3.点击“选择要写的服务ID”或者“选择要写的/读的”,进入下面界面。

理解Profiles, Services,Characteristics,UUID等值

4.点击sevices的下拉框,如下界面:

理解Profiles, Services,Characteristics,UUID等值

 

 

--------------------- 本文来自 happygrilclh 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/happygrilclh/article/details/76160304?utm_source=copy