蓝牙 UUID 解释_蓝牙uuid_jiangchao3392的博客-程序员宅基地

技术标签: 蓝牙  UUID  

 

一,什么是 UUID


UUID 可以简单理解为编号,唯一的编号,用于区分不同的个体。服务和特性都有各自的UUID。比如经典的9527。UUID 就跟身份证一样,不管是你是局长还是科长,人人都有身份证。

 

 

这里的 Read, Notify,Write_Without_Response为该Characteristic
UUID所具有的属性

 

 

二、 服务(Service) UUID

        服务(Service)可以理解为组长,一个组里面至少有一个或多个特性(Characteristic),特性(Characteristic)可以理解为组员。不同的服务(Service)应该有不同的编号(UUID),用以区分不同的服务(Service)。
       我是重案组总督察黄启发, 这里已经被包围了, 限你三分钟之内投降,这里的黄Sir就是组长,组长一般是不干活的,真正干活的是组员(特性),比如谈判专家、拆弹专家和飞虎队。

 

三,特性(Characteristic)UUID

 

特性(Characteristic)是依附于某个服务(Service)的,可以理解为组员,每个组员至少要有一个编号(UUID)以及一个或多个属性(Property)每个特性(Characteristic)可以同时有一个或多个属性。
就比如 119 不光可以救火,像忘带钥匙打不开门,工头不发工资站到楼顶上想不开等等119都可以帮忙,这就是混合属性, 当然了,“Fire inthe hole”人家119 不管。

 

 

四,属性(Property)

   属性的概念非常好理解,在此不多阐述,只是简单描述一下,借用古诗一首:文能提笔安天下,武能上马定乾坤,上炕认识媳妇,下炕认识鞋。

常用的属性有如下几个,我们以手机和蓝牙模块进行通讯来举栗说明:

Read: 读属性,具有该属性的UUID 是可读的,也就是说这个属性允许手机来读取一些信息。手机可以发送这个指令来读取某个具有读属性UUID的信息,华茂的模块在读取的时候,会返回模块的蓝牙地址。

Notify: 通知属性, 具有该属性的 UUID是可以发送通知的,也就是说具有这个属性的特性(Characteristic)可以主动发送信息给手机。举个栗子,华茂蓝牙模块发送数据给手机,就是通过这个属性。

Write: 写属性, 具体该属性的 UUID 是可以接收写入数据的。通常手机发送数据给蓝模块就是通过这个属性完成的。这个属性在Write 完成后,会发送写入完成结果给手机,然后手机再可以写入下一包,这个属性在写入一包数据后,需要等待应用层返回写入结果,速度比较慢。

WriteWithout Response:写属性,从字面意思上看,只是写,不需要返回写的结果,这个属性的特点是不需要应用层返回,完全依靠协议层完成,速度快,但是写入速度超过协议处理速度的时候,会丢包。华茂的蓝牙模块,Read(读)和Notify(通知)是固定的属性,不能移除和修改,您可以根据需要配置Write(写)的属性。

 

 

看到这里,相信在这篇文章开始处列出的华茂模块的UUID 信息就一目了然了,扛把子(服务)是0xFFE0, 小弟只有一个(特性)是0xFFE1,小弟(特性)0xFFE1同时具有读、通知、不需要返回结果的写属性。顺道辟个谣,有些人认为用一个UUID 来读写会造成冲突,其实并不是这样,多个属性集合到一体是可以的,蓝牙协议是允许这么做的。

 

 

 

蓝牙广播中对服务 UUID 格式定义都有三种 16 bit UUID、32 bit UUID、128 bit UUID。

但是熟悉安卓开发的小伙伴都知道接口都 UUID 格式,fromString 时候 16bit 的 UUID 该咋办呢?

16bit 和 32bit 的 UUID 与 128bit 的值之间转换关系:

128_bit_UUID = 16_bit_UUID * 2^96 + Bluetooth_Base_UUID

128_bit_UUID = 32_bit_UUID * 2^96 + Bluetooth_Base_UUID

其中 Bluetooth_Base_UUID 定义为 00000000-0000-1000-8000-00805F9B34FB 

如果你想说这是啥呀,那我这样说你应该可以明白点:

若 16 bit UUID为xxxx,那么 128 bit UUID 为 0000xxxx-0000-1000-8000-00805F9B34FB

若 32 bit UUID为xxxxxxxx,那么 128 bit UUID 为 xxxxxxxx-0000-1000-8000-00805F9B34FB




参考:https://www.jianshu.com/p/027904a8025b

《如何配置HM-10、HM-11、HM-16、HM-17 UUID说明--济南华茂科技有限公司》

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jiangchao3392/article/details/90213465

智能推荐

Windows Server 2019配置DNS服务器(入门)_window server 2019服务器管理器中的dns服务器ip在哪里设置-程序员宅基地

Windows Server 2019配置DNS服务器(入门)步骤1: 添加新角色:DNS服务器点击添加心的角色,依次进行下一步。完成截图:步骤2: 新建正向查找区域“正向查找区域”->“新建区域”步骤3: 新建主机步骤4: 新建反向查找区域步骤5: 新建指针步骤6: 将本机IP设为首选DNS服务器的地址步骤7: 在本机cmd下..._window server 2019服务器管理器中的dns服务器ip在哪里设置

OpenCV开发笔记(七):OpenCV基础图形绘制_opencv开发笔记(七):opencv基础图形绘制-程序员宅基地

若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936本文章博客地址:https://blog.csdn.net/qq21497936/article/details/101026612目录前言Demo基础绘制绘制直线:line绘制椭圆:ellipse绘制矩形:rectangle绘制圆形:circle..._opencv开发笔记(七):opencv基础图形绘制

1007 素数对猜想(C语言)-程序员宅基地

1007 素数对猜想 (20 分)让我们定义 dn 为:dn = pn+1 - pn,其中 pi 是第i个素数。显然有 d1=1 且对于n>1有 dn 是~~*偶数 *~~ ,给定任意正整数N(<10​0000​​ ),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例...

Unity Shader PostProcessing - 2 - 边缘检测_processing边缘检测-程序员宅基地

边缘检测的算法有很多种这里介绍的是其中的一部分SobelPrewittRobertLine这些卷积核,都是final g越大,越可能是边缘Sobel(-1,1), (0,1), (1,1)与(-1,-1),(0,-1),(1,-1)的亮度差距越大,特别是左右、上下的差异越大,则final g越大Robertuv_offset(0,1)与uv_offset(1,..._processing边缘检测

python中invalid argument_Python创建文件报错OSError:[Errno 22] Invalid argument处理-程序员宅基地

问题:windows平台下使用python open函数w模式打开文件报错“OSError: [Errno 22] Invalid argument: '../news/“消费升维”成零售业新风口?渠道多元同步跟进.txt'”解决:本来猜测是转义符的问题,但是使用python原字符串仍然不能解决问题。后来发现其实是windows下文件的命名存在限制:在Windows系统中,文件名不允许使用的字符有..._python fopen invalid argument

随便推点

win10 cuda_小白之旅(2):第一个应用程序_devicequery 没有这个应用-程序员宅基地

博主自己学习,仅此记录,并方便学过c、已经配置好cuda的朋友交流学习。(我机子cuda9.0)测试自己电脑性能直接在cuda文件夹下搜索deviceQuery,在这个目录下找到sln文档(注意,对应你的vs版本,如下图一),在vs里生成exe文件,运行即可。第二行那个就是算力,通常要大于3才可以,低于三不清楚,还有显卡其他信息。第一个应用程序计算一个参考点与N个0-1..._devicequery 没有这个应用

BigInteger和BigDecimal_biginteger除法-程序员宅基地

BigInteger和BigDecimalBigInteger类概述:BigInteger的方法介绍:构造方法public BigInteger(String val)bigInteger的加法:bigInteger的减法:bigInteger的乘法:bigInteger的除法:bigInteger的除法和求余操作法:BigDecimal概述:BigDecimal的方法BigInteger类概述..._biginteger除法

对英雄联盟的点评-程序员宅基地

1.英雄联盟是由美国RoitGames最新开发的3D大型竞技场战网游戏,其主创团队是由实力强劲的DotA-Allstars的核心人物,以及暴雪等著名游戏公司的美术、策划、程序人员组成,将DotA经典玩法从对战平台延伸到真正的网络游戏世界。英雄联盟(LOL)是LeagueofLegends的简称,中文名为《英雄联盟》。游戏中拥有海量风格各异的英雄供玩家自由选择,拥有更加丰富、便捷的物品合成系统,更...

Scrapy实例:爬取中国天气网天气数据_基于scrapy爬虫的天气数据采集-程序员宅基地

1.创建项目在你存放项目的目录下,按shift+鼠标右键打开命令行,输入命令创建项目:PS F:\ScrapyProject> scrapy startproject weather # weather是项目名称回车即创建成功这个命令其实创建了一个文件夹而已,里面包含了框架规定的文件和子文件夹.我们要做的就是编辑其中的一部分文件即可.其实scrapy构建爬..._基于scrapy爬虫的天气数据采集

DSC集群中DMASMCMD和DMASMTOOL工具的使用_达梦asmcmd 删除文件-程序员宅基地

一、DMASMCMD 是 DMASM 文件系统初始化工具,用来格式化裸设备为 DMASM 磁盘,并初始化 DCR Disk、 Voting Disk。格式化 DMASM 磁盘就是在裸设备的头部写入 DMASM 磁盘特征描述符号,包括 DMASM 标识串、 DMASM 磁盘名、 以及 DMASM 磁盘大小等信息。 其中Voting Disk 和 DCR Disk 也会被格式化为 DMASM 磁盘DMASMCMD 工具的主要功能和命令如下:1. 格式化 DMASM 磁盘,可格式化的类型有3种:dcr.._达梦asmcmd 删除文件

Oracle 创建新用户,并授权_oracle中建一个新用户-程序员宅基地

cmd下sqlplus回车进入system用户(默认有创建用户的权限)create user xxx identified by xxx ;(一定不能丢了;)创建完毕,但此时链接数据库会报错 oracle创建用户ORA-01045:user lacks CREATE SESSION privilege;logon denied..是由于没给用户赋权限解决办法:1、g_oracle中建一个新用户