申明:博文有一部分内容是转载的。

理解协议栈中,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之上的,如下图所示:

  • 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值等。

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

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

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

理解Profiles, Services,Characteristics,UUID等值相关推荐

  1. 2021-04-27 Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调

    Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调 一.这个例子的实现的功能是,app控制power pin和control ...

  2. Bluetooth SIG定义的标准Characteristics UUID

    官网链接: https://www.bluetooth.com/specifications/gatt/characteristics/ Name Uniform Type Identifier As ...

  3. ROS学习-理解ROS Services 和 Parameters

    假设上一篇博客:ROS学习-理解ROS话题中所启动的小乌龟turtlesim节点仍然还在运行. Services服务是节点之间进行相互联系的另外一种方式,允许节点之间进行发送请求和接收响应. 使用 r ...

  4. ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services

    ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services 1. 专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文 ...

  5. Onvif协议:理解什么是Web Services

    ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供.要理解什么是ONVIF,就必须先知道什么是Web Services.所以,开始介绍ONVIF之前,我单独整理了一篇 ...

  6. 用MS SQL Reporting Services生成报表

    灵活的报表功能是大多数业务应用程序的一个要求,这些报表功能在集成到 Web 应用程序中之后用途更加广泛.利用 SQL Server® 2000 Reporting Services 的最新版本,您可以 ...

  7. Reporting Services 的伸缩性和性能表现规划(转载)

    简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台.Re ...

  8. Onvif协议学习:3、了解web services

    Onvif协议学习:3.了解web services 文章目录 Onvif协议学习:3.了解web services 1.远程调用 2.远程调用原理 3.Web Services的简单理解 4.Web ...

  9. Bluetooth---蓝牙

    转载自: https://blog.csdn.net/it1039871366/article/details/46441507 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Andro ...

最新文章

  1. 「镁客·请讲」快仓杨威:赋予仓库灵魂,让智能仓库系统自我进化和迭代
  2. JavaWeb 错误/异常时页面提示
  3. 单片机编程主函数的特点
  4. python中 r是什么意思_python中rb含义理解
  5. 把一个整形数组中重复的数字去掉 - 微软面试题
  6. C++回声服务器_6-多进程pipe版本服务器
  7. float与double精度丢失问题
  8. 基于社会资源的普通摄像机1400结构化AI算法改造方案
  9. 量子计算(六):量子计算软件介绍
  10. java机房温度监测的仿真_基于三维仿真的数据中心机房监控可视化管理
  11. 2021年CSDN年度总结:生活总是焦虑与希望并存,流水要争先,靠的是绵绵不绝。
  12. tcp协议栈优化1-增加TCP初始拥塞窗口 ===》流氓的方式
  13. 利用R语言画简单时间序列图
  14. 实现基于D3.js的图形动态变化
  15. 练习4-7 求e的近似值
  16. [Pandas技巧] 多列值合并成一列
  17. 专转本-计算机二级习题2
  18. HTML5与CSS3初级入门-姜威-专题视频课程
  19. HDOJ 2021-2030
  20. 数学建模学习笔记-概况

热门文章

  1. Linux sed命令的用法介绍
  2. hibernate一对一主键唯一外键关联(一)
  3. python评价指标_详解分类评价指标和回归评价指标以及Python代码实现
  4. python爬虫实例网易云-爬虫实战(二) 用Python爬取网易云歌单
  5. JAVA读取WORD,EXCEL,POWERPOINT,PDF文件的方法
  6. elasticsearch部分常用操作
  7. 字母,数字,下划线,数字的正则表达式
  8. 分数阶导数的意义_导数的意义
  9. 着千奇百怪地求爱方式
  10. JAVA修炼秘籍第六章《鏖战》