理解Profiles, Services,Characteristics,UUID等值
申明:博文有一部分内容是转载的。
理解协议栈中,Profiles, Services,Characteristics,UUID等值的概念。
在这之前我们得先了解一下一些专业词汇:
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等值相关推荐
- 2021-04-27 Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调
Android 理解frameworks services jni hardware kernel 整个控制过程实例包括回调 一.这个例子的实现的功能是,app控制power pin和control ...
- Bluetooth SIG定义的标准Characteristics UUID
官网链接: https://www.bluetooth.com/specifications/gatt/characteristics/ Name Uniform Type Identifier As ...
- ROS学习-理解ROS Services 和 Parameters
假设上一篇博客:ROS学习-理解ROS话题中所启动的小乌龟turtlesim节点仍然还在运行. Services服务是节点之间进行相互联系的另外一种方式,允许节点之间进行发送请求和接收响应. 使用 r ...
- ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services
ONVIF协议网络摄像机(IPC)客户端程序开发(3):理解什么是Web Services 1. 专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解,专栏前面文 ...
- Onvif协议:理解什么是Web Services
ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供.要理解什么是ONVIF,就必须先知道什么是Web Services.所以,开始介绍ONVIF之前,我单独整理了一篇 ...
- 用MS SQL Reporting Services生成报表
灵活的报表功能是大多数业务应用程序的一个要求,这些报表功能在集成到 Web 应用程序中之后用途更加广泛.利用 SQL Server® 2000 Reporting Services 的最新版本,您可以 ...
- Reporting Services 的伸缩性和性能表现规划(转载)
简介 Microsoft? SQL Server? Reporting Services 是一个将集中管理的报告服务器具有的伸缩性和易管理性与基于 Web 和桌面的报告交付手段集于一身的报告平台.Re ...
- Onvif协议学习:3、了解web services
Onvif协议学习:3.了解web services 文章目录 Onvif协议学习:3.了解web services 1.远程调用 2.远程调用原理 3.Web Services的简单理解 4.Web ...
- Bluetooth---蓝牙
转载自: https://blog.csdn.net/it1039871366/article/details/46441507 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Andro ...
最新文章
- 「镁客·请讲」快仓杨威:赋予仓库灵魂,让智能仓库系统自我进化和迭代
- JavaWeb 错误/异常时页面提示
- 单片机编程主函数的特点
- python中 r是什么意思_python中rb含义理解
- 把一个整形数组中重复的数字去掉 - 微软面试题
- C++回声服务器_6-多进程pipe版本服务器
- float与double精度丢失问题
- 基于社会资源的普通摄像机1400结构化AI算法改造方案
- 量子计算(六):量子计算软件介绍
- java机房温度监测的仿真_基于三维仿真的数据中心机房监控可视化管理
- 2021年CSDN年度总结:生活总是焦虑与希望并存,流水要争先,靠的是绵绵不绝。
- tcp协议栈优化1-增加TCP初始拥塞窗口 ===》流氓的方式
- 利用R语言画简单时间序列图
- 实现基于D3.js的图形动态变化
- 练习4-7 求e的近似值
- [Pandas技巧] 多列值合并成一列
- 专转本-计算机二级习题2
- HTML5与CSS3初级入门-姜威-专题视频课程
- HDOJ 2021-2030
- 数学建模学习笔记-概况