首页 > 其他分享 >【蓝牙小知识】—UUID

【蓝牙小知识】—UUID

时间:2023-09-02 14:12:34浏览次数:37  
标签:服务 UUID Characteristic 知识 蓝牙 bit 属性

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

UUID全称:Universally Unique Identifier,即通用唯一识别码。
由一组32位数的16进制数字所构成,总数为16^32 = 2^128=3.4 x 10^38。
UUID的标准型式包含32个16进制数字;
以连字号分为五段,形式为8-4-4-4-12的32个字符。
如:550e8400-e29b-41d4-a716-446655440000

UUID的作用:让分布式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。这样就能建立不与其他人冲突的UUID。

 

在蓝牙领域技术中的对于UUID的概念,需要先讲述一下蓝牙服务时什么?
蓝牙服务组成:使用蓝牙对外提供服务的设备,需要有对应的服务功能。比如使用蓝牙听歌时,需要提供音频播放的功能,这种具体的功能,就是蓝牙服务。这些服务分为服务、特性、属性三个部分。
为了明确标准的蓝牙服务,蓝牙技术联盟SIG定义UUID共用了一个基本的UUID:0x0000xxxx-0000-1000-8000-00805F9B34FB,总共128位。为了进一步简化基本UUID,每一个蓝牙技术联盟定义的属性有一个唯一的16位UUID,以代替上面的基本UUID的‘x’部分。
在服务过程中,需要使用UUID用于标识蓝牙服务以及通讯特征访问属性,不同的蓝牙服务和属性使用不同的访问方法。只有找到正确的UUID,才能使用正确的功能。在“GATT层”中定义的所有属性都有一个UUID值,用来识别不同的特性。

 

蓝牙广播中对服务UUID格式定义都有三种 16 bit UUID32 bit UUID128 bit UUID
若 16 bit UUID为xxxx,那么 128 bit UUID 为 0000xxxx-0000-1000-8000-00805F9B34FB
若 32 bit UUID为xxxxxxxx,那么 128 bit UUID 为xxxxxxxx-0000-1000-8000-00805F9B34FB

一、 服务(Service) UUID
服务(Service)可以理解为组长,一个组里面至少有一个或多个特性(Characteristic),特性(Characteristic)可以理解为组员。不同的服务(Service)应该有不同的编号(UUID),用以区分不同的服务(Service)。
二、特性(Characteristic)UUID
特性(Characteristic)是依附于某个服务(Service)的,可以理解为组员,每个组员至少要有一个编号(UUID)以及一个或多个属性(Property),每个特性(Characteristic)可以同时有一个或多个属性。
三、属性(Property)UUID
常用的属性有如下几个,我们以手机和蓝牙模块进行通讯来说明:
Read: 读属性,具有该属性的UUID 是可读的,也就是说这个属性允许手机来读取一些信息。手机可以发送这个指令来读取某个具有读属性UUID的信息。

Notify: 通知属性,具有该属性的UUID是可以发送通知的,也就是说具有这个属性的特性(Characteristic)可以主动发送信息给手机。
Write: 写属性,具有该属性的 UUID 是可以接收写入数据的。通常手机发送数据给蓝牙模块就是通过这个属性完成的。这个属性在Write 完成后,会发送写入完成结果给手机,然后手机再可以写入下一包,这个属性在写入一包数据后,需要等待应用层返回写入结果,速度比较慢。
Write Without Response:写属性,从字面意思上看,只是写,不需要返回写的结果,这个属性的特点是不需要应用层返回,完全依靠协议层完成,速度快,但是写入速度超过协议处理速度的时候,会丢包。
扛把子(服务)是0xFFE0, 小弟只有一个(特性)是0xFFE1,小弟(特性)0xFFE1同时具有读、通知、不需要返回结果的写属性。

 

标签:服务,UUID,Characteristic,知识,蓝牙,bit,属性
From: https://www.cnblogs.com/ZYL-FS/p/17673619.html

相关文章

  • 光模块知识全解析:网络工程师的必备技能
    在这个信息爆炸的时代,数据传输已经成为我们生活中不可或缺的一部分。而在众多的数据传输方式中,光纤通信以其高速、高带宽、低损耗的特点,成为了现代通信的主流。而在这个光纤通信的背后,有一个神奇的器件在默默地发挥着作用,那就是光模块。那么,光模块究竟是什么呢?它又是如何工作的呢?本......
  • 纯干货!一文get昇腾Ascend C编程入门全部知识点
    本文分享自华为云社区《昇腾AscendC编程入门教程》,作者:昇腾CANN。2023年5月6日,在昇腾AI开发者峰会上,华为正式发布了面向算子开发场景的昇腾AscendC编程语言。AscendC原生支持C/C++编程规范,通过多层接口抽象、并行编程范式、孪生调试等技术,极大提高了算子的开发效率,帮助AI开发......
  • 软考知识点 - 计算机组成结构
    冯·诺依曼结构冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。特点:一般用于PC处理器,如13,15,17处理器(2)指令与数据存储器合并在一起(3)指令与数据都通过相同的据总线传输哈佛结构哈佛结构是一种将程序指令存储和数据存储分开的存储器......
  • Linux文件管理知识查找文件(第二篇)
    Linux文件管理知识:查找文件(第二篇)上篇文章详细介绍了linux系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。Find命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find命令是基于搜索结果来执......
  • Linux文件管理知识:查找文件(第二篇)
    上篇文章详细介绍了 linux 系统中查找文件的工具或者命令程序locate和find命令的基本操作。那么,今天这篇文章紧接着查找文件相关操作内容介绍。 Find 命令所属操作列表中的条目,有助于我们想要的结果输出。上篇文章已讲到find命令是基于搜索结果来执行操作命令程序。预定......
  • 数据库知识库
    Oracle数据库知识库查看是否有表被锁住:select*fromv$locked_object;查看详细的信息:selectsess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefromv$locked_objectlo,dba_objectsao,v$sessionsess,v$processpwherea......
  • 构建nginx镜像的知识点
    1、如何进入nginx容器// 通过exec命令可以进入到镜像里面。docker exec -it nginx-alpine /bin/sh// 退出镜像exit这里需要注意下,如果是标准的nginx镜像,一般是通过dockerexec-itnginx01bash来进入到镜像里面。所以当通过bash进不去的时候,可换成其他命令......
  • Redis相关知识
    什么是Redis?它主要用来什么的?Redis是一个基于Key-Value存储结构的Nosql开源内存数据库。它提供了5种常用的数据类型,String、Map、Set、ZSet、List。它可以覆盖应用开发中大部分的业务场景,比如Top10问题、好友关注列表、热点话题等。Redis是基于内存存储,并且在数据结构上做了......
  • Java8知识梳理
    Java8的改进速度更快代码更少(Lambda表达式)引入强大的StreamAPI便于并行最大化减少空指针异常(Optional)Nashorn引擎,允许在JVM上运行js应用并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。相比较串行的流,并行的流可以很大程度上提高程序的执行......
  • [java基础知识复习] Java基础知识总结分享一
    写代码:1,明确需求。我要做什么?2,分析思路。我要怎么做?1,2,3。3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。4,代码实现。用具体的java语言代码把思路体现出来。学习新技术的四点:1,该技术是什么?2,该技术有什么特点(使用注意):3,该技术怎么使用。demo4,该技术什么时候用?test。————......