一,什么是 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说明--济南华茂科技有限公司》

蓝牙 UUID 解释相关推荐

  1. Android蓝牙UUID

    android 蓝牙UUID,蓝牙开发必备居家良药. ServiceDiscoveryServerServiceClassID_UUID = '{00001000-0000-1000-8000-008 ...

  2. 对Android蓝牙UUID的理解

    UUID 先来段百度百科上的解释: UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Softw ...

  3. 蓝牙 UUID识别码对应的服务类型

    UUID是"Universally Unique Identifier"的简称,通用唯一识别码的意思.对于蓝牙设备,每个服务都有通用.独立.唯一的UUID与之对应.也就是说,在同一 ...

  4. Android蓝牙连接uuid,通过蓝牙UUID连接到android设备时遇到麻烦

    美好的一天,我试图创建一个蓝牙应用程序,但无法连接到另一个Android设备.似乎正在发生的问题是在传出连接createRfcommSocketToServiceRecord(UUID)中-我认为在这 ...

  5. 蓝牙uuid是什么意思_小公主的吐槽非常好|米家蓝牙温湿度计2

    写作只为寻找相同爱纠结的人. 虽然有没有我都不会去看家里的湿度.温度,但偶然看到推荐米家蓝牙温湿度计2到手价3个装仅需58元,感觉实在很划算,立马下单买了,但也因为没看清楚介绍,遇到很多坑,特来吐槽一 ...

  6. 蓝牙uuid是什么意思_HIFI高保真+实用设计带你打开真无线蓝牙耳机的正确使用方式...

    随着蓝牙耳机逐渐被大众消费者所认可,越来越多的耳机厂商加入到了真无线蓝牙耳机的主阵营中.除了在音质方面的深挖,各家耳机厂商回头一看好像除了在设计语言上各有不同以外,好像都是蓝牙5.0.拿出即用等等.对 ...

  7. Android 蓝牙开发 uuid,Android蓝牙开发之 UUID

    UUID:全球唯一标识符 在蓝牙中,每个Service和Characteristic都唯一地由"全球唯一标识符" (UUID)来校验,主要是保证他们的唯一性. UUID可分为:16 ...

  8. android蓝牙浅析

    转载 地址:http://blog.csdn.net/baimy1985/article/details/8892410 前段时间在 网上看了一些关于Android蓝牙的文章,发现大部分是基于老版本( ...

  9. android -- 蓝牙 bluetooth解读

    入手一个新的模块或应用,当然首先要知道它都有什么了,与它相关的代码在那里,所以先一起看下蓝牙代码分布吧. 1. 代码分布: packages/apps/Bluetooth/ 看这路径肯定是蓝牙应用方面 ...

  10. android -- 蓝牙 bluetooth (一) 入门

    android -- 蓝牙 bluetooth (一) 入门 分类: Android的原生应用分析 2013-05-19 21:44 19998人阅读 评论(42) 收藏 举报 bluetooth4. ...

最新文章

  1. MySQL 字段类型知识
  2. 笔记本html外接显示器,笔记本
  3. linux查看mq死信队列,linux下postgresql 一主多从、redis集群、rabbitmq等环境搭建 (九) xa-rdmp-archiving 从数据库的安装...
  4. pytorch模型参数信息 计算模型的FLOPs
  5. Java_Web--JDBC 增加记录操作模板
  6. highgui java opencv_java – OpenCV 3.0.0 JAR缺少HighGUI
  7. 设计模式 - Mediator
  8. okta使用_使用Okta的单点登录保护您的Vert.x服务器
  9. Hadoop_10_HDFS 的 DataNode工作机制
  10. linux客户端掉线重连,SSH自动断开后重连的解决方案
  11. 随机用户名获取易语言代码
  12. “堆排序算法”(C语言实现)
  13. 游戏源代码是什么意思_什么是游戏
  14. 安装软件,python安装,node.js安装,pycharm安装,vscode安装,PR, PS, LR.AE Windows开关机等,雪崩的时候没有一片雪花儿是无辜的
  15. 2016蓝桥杯b组java试题及答案_2016年第七届蓝桥杯java B组省赛试题
  16. 操作系统,Ubuntu虚拟机编译裁剪内核
  17. 著名女程序员---女神程序媛
  18. array()、range() 和 arange()函数的区别和用法
  19. uniapp的tabBar不显示
  20. tcpdump 抓包工具使用

热门文章

  1. 冷眼看“艾艾提”炮轰“洪波”“老牛”
  2. java web 图片 加载_Java web开发中加载图片路径的两种方式
  3. python基础:面向对象的应用--搬家具。
  4. (一)Activiti 数据库25张表——一般数据2 (ACT_GE_PROPERTY)
  5. mysql oob_mysql 读写文件特性和OOB注入
  6. bootstrap table合计行单元格隐藏和列宽设置
  7. 怎么快速解决dns被劫持问题?
  8. App Tamer for mac常见问题
  9. 微信小程序红包 php,微信小程序发放红包+领取红包(PHP)
  10. PT100恒流源测温电路【一】