借助调试工具理解BLE协议_3.Windows BLE调试工具

1.调试工具下载 

         Windows BLE调试工具是一款运行在Windows下的BLE调试软件,实现了扫描、连接、获取BLE设备上的服务以及向服务写入和读取数据的功能。图1是Windows BLE调试工具主界面。资源地址:

https://download.csdn.net/download/mecompu/86508009?spm=1001.2014.3001.5501&login=from_csdn

图1 Windows BLE调试工具主界面 

 2.使用工具连接蓝牙设备并查看Service。

         在图1所示界面搜索到目标设备CMT4502-20240601后,点击连接按钮打开如下图2页面。

        图2 服务展示和操作页面 

         从上图可以看到从机CMT4502-20240601有7个服务。分别是1800、1801、180A、FFC0、FF90、FFE0、FF01。其中1800,1801,180a是由SIG指定的特定服务的标识号。FFC0、FF90、FFE0、FF01是自定义的服务UUID。        

         下面代码中GattNativeServiceUUID是一些常见的Service服务UUID。想要了解更多信息,可以登录网站:Assigned Numbers | Bluetooth® Technology Website

        public enum GattNativeServiceUuid : ushort
        {
            None = 0,
            AlertNotification = 0x1811,
            Battery = 0x180F,
            BloodPressure = 0x1810,
            CurrentTimeService = 0x1805,
            CyclingSpeedandCadence = 0x1816,
            DeviceInformation = 0x180A,
            GenericAccess = 0x1800,
            GenericAttribute = 0x1801,
            Glucose = 0x1808,
            HealthThermometer = 0x1809,
            HeartRate = 0x180D,
            HumanInterfaceDevice = 0x1812,
            ImmediateAlert = 0x1802,
            LinkLoss = 0x1803,
            NextDSTChange = 0x1807,
            PhoneAlertStatus = 0x180E,
            ReferenceTimeUpdateService = 0x1806,
            RunningSpeedandCadence = 0x1814,
            ScanParameters = 0x1813,
            TxPower = 0x1804,
            SimpleKeyService = 0xFFE0
        }

          以下代码中定义了一些常见的特征值:        

public enum GattNativeCharacteristicUuid : ushort
        {
            None = 0,
            AlertCategoryID = 0x2A43,
            AlertCategoryIDBitMask = 0x2A42,
            AlertLevel = 0x2A06,
            AlertNotificationControlPoint = 0x2A44,
            AlertStatus = 0x2A3F,
            Appearance = 0x2A01,
            BatteryLevel = 0x2A19,
            BloodPressureFeature = 0x2A49,
            BloodPressureMeasurement = 0x2A35,
            BodySensorLocation = 0x2A38,
            BootKeyboardInputReport = 0x2A22,
            BootKeyboardOutputReport = 0x2A32,
            BootMouseInputReport = 0x2A33,
            CSCFeature = 0x2A5C,
            CSCMeasurement = 0x2A5B,
            CurrentTime = 0x2A2B,
            DateTime = 0x2A08,
            DayDateTime = 0x2A0A,
            DayofWeek = 0x2A09,
            DeviceName = 0x2A00,
            DSTOffset = 0x2A0D,
            ExactTime256 = 0x2A0C,
            FirmwareRevisionString = 0x2A26,
            GlucoseFeature = 0x2A51,
            GlucoseMeasurement = 0x2A18,
            GlucoseMeasurementContext = 0x2A34,
            HardwareRevisionString = 0x2A27,
            HeartRateControlPoint = 0x2A39,
            HeartRateMeasurement = 0x2A37,
            HIDControlPoint = 0x2A4C,
            HIDInformation = 0x2A4A,
            IEEE11073_20601RegulatoryCertificationDataList = 0x2A2A,
            IntermediateCuffPressure = 0x2A36,
            IntermediateTemperature = 0x2A1E,
            LocalTimeInformation = 0x2A0F,
            ManufacturerNameString = 0x2A29,
            MeasurementInterval = 0x2A21,
            ModelNumberString = 0x2A24,
            NewAlert = 0x2A46,
            PeripheralPreferredConnectionParameters = 0x2A04,
            PeripheralPrivacyFlag = 0x2A02,
            PnPID = 0x2A50,
            ProtocolMode = 0x2A4E,
            ReconnectionAddress = 0x2A03,
            RecordAccessControlPoint = 0x2A52,
            ReferenceTimeInformation = 0x2A14,
            Report = 0x2A4D,
            ReportMap = 0x2A4B,
            RingerControlPoint = 0x2A40,
            RingerSetting = 0x2A41,
            RSCFeature = 0x2A54,
            RSCMeasurement = 0x2A53,
            SCControlPoint = 0x2A55,
            ScanIntervalWindow = 0x2A4F,
            ScanRefresh = 0x2A31,
            SensorLocation = 0x2A5D,
            SerialNumberString = 0x2A25,
            ServiceChanged = 0x2A05,
            SoftwareRevisionString = 0x2A28,
            SupportedNewAlertCategory = 0x2A47,
            SupportedUnreadAlertCategory = 0x2A48,
            SystemID = 0x2A23,
            TemperatureMeasurement = 0x2A1C,
            TemperatureType = 0x2A1D,
            TimeAccuracy = 0x2A12,
            TimeSource = 0x2A13,
            TimeUpdateControlPoint = 0x2A16,
            TimeUpdateState = 0x2A17,
            TimewithDST = 0x2A11,
            TimeZone = 0x2A0E,
            TxPowerLevel = 0x2A07,
            UnreadAlertStatus = 0x2A45,
            AggregateInput = 0x2A5A,
            AnalogInput = 0x2A58,
            AnalogOutput = 0x2A59,
            CyclingPowerControlPoint = 0x2A66,
            CyclingPowerFeature = 0x2A65,
            CyclingPowerMeasurement = 0x2A63,
            CyclingPowerVector = 0x2A64,
            DigitalInput = 0x2A56,
            DigitalOutput = 0x2A57,
            ExactTime100 = 0x2A0B,
            LNControlPoint = 0x2A6B,
            LNFeature = 0x2A6A,
            LocationandSpeed = 0x2A67,
            Navigation = 0x2A68,
            NetworkAvailability = 0x2A3E,
            PositionQuality = 0x2A69,
            ScientificTemperatureinCelsius = 0x2A3C,
            SecondaryTimeZone = 0x2A10,
            String = 0x2A3D,
            TemperatureinCelsius = 0x2A1F,
            TemperatureinFahrenheit = 0x2A20,
            TimeBroadcast = 0x2A15,
            BatteryLevelState = 0x2A1B,
            BatteryPowerState = 0x2A1A,
            PulseOximetryContinuousMeasurement = 0x2A5F,
            PulseOximetryControlPoint = 0x2A62,
            PulseOximetryFeatures = 0x2A61,
            PulseOximetryPulsatileEvent = 0x2A60,
            SimpleKeyState = 0xFFE1
        }

2.1 Service UUID_1800 (GenericAccess = 0x1800)

        现在打开1800Service查看其中的特征值,如下图3所示,可以看到2a00,2a01,2a04是由SIG指定的特征UUID的标识号:

       读取2a00的值:

        

        特征值UUID_2a00(Appearance = 0x2A01)设备名 :

                十六进制:0x43 0x4D 0x54 0x34 0x35 0x30 0x32 0x2D 0x32 0x30 0x32 0x34 0x30 0x36

                对应ASCII字符串:CMT4502-202406

           读取2a01的值: 

        

                 特征值UUID_2a01(Appearance = 0x2A01)外观 :

        读取返回:

                十六进制: 0x00 0x00

         读取2a04:

                特征值UUID_2a01(PeripheralPreferredConnectionParameters = 0x2A04)外设最佳连接参数。

        接下来将会更新说明下其他write,notify属性。敬请期待......         

        

        

        

        

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678476.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CogVLM2多模态开源大模型部署与使用

CogVLM2多模态开源大模型部署与使用 项目简介 CogVLM2 是由清华大学团队发布的新一代开源模型系列。2024年5月24日,发布了Int4版本模型,只需16GB显存即可进行推理。2024年5月20日,发布了基于llama3-8b的CogVLM2,性能与GPT-4V相当…

AI时代下的智能商品计划管理

在时尚产业迅猛发展的今天,商品计划已成为品牌运营不可或缺的一环。优秀的服装品牌通过精心策划的商品计划,不仅致力于为消费者提供独特且符合其需求的产品,同时也在不断探索如何更有效地整合企业资源,确保从设计、研发、采购到生…

可视化数据科学平台在信贷领域应用系列二:数据清洗

上一篇文章中,某互联网银行零售信贷风险建模专家使用数据科学平台Altair RapidMiner——完成了数据探索工作,《可视化数据科学平台在信贷领域应用系列一:数据探索》。本次这位建模专家再次和大家分享数据准备的第二步骤,数据清洗。…

揭秘HubSpot集客营销:如何吸引并转化全球潜在客户

随着全球数字化浪潮的推进,企业出海已经成为许多公司扩大市场、增加品牌曝光度的重要战略。HubSpot集客营销作为一种以客户为中心、数据驱动的营销策略,为企业在海外市场的成功提供了强有力的支持。作为HubSpot亚太地区的合作伙伴,NetFarmer将…

小熊家务帮day5-day7 客户管理模块1 (小程序认证,手机验证码认证,账号密码认证,修改密码,找回密码等)

客户管理模块 1.认证模块1.1 认证方式介绍1.1.1 小程序认证1.1.2 手机验证码登录1.1.3 账号密码认证 1.2 小程序认证1.2.1 小程序申请1.2.2 创建客户后端工程jzo2o-customer1.2.3 开发部署前端1.2.4 小程序认证流程1.2.4.1 customer小程序认证接口设计Controller层Service层调用…

TCP三次握手、四次分手

TCP三次握手、四次挥手 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,用于在网络上建立可靠的数据传输通道。在TCP/IP协议族中,TCP负责在数据传输过程中提供可靠性和完整性保证。TCP…

python协程入门实战详解

本章将以通俗易懂、贴合实际的方式介绍以下内容: 协程是什么,有什么特点,协程的优势是什么如何理解事件和事件循环协程的创建方式,如何控制协程的并发量在协程中使用aiohttp发送HTTP请求aiohttp案例协程中的异常处理,…

flowable工作流 完成任务代码 及扩展节点审核人(实现多级部门主管 审核等)详解【JAVA+springboot】

低代码项目 使用flowable 工作流 完成任务代码 详解 可以看到 complete()方法 传递了流程变量参数var 前端传递此参数就可以实现 流程中 审批 更新流程变量参数var 也可以进行更多扩展 实现流程中更新表单内容功能 启动流程实例代码 实现对于流程自定义 动态节点审核人 功…

五款效率软件助你事半功倍

1、🔗 亿可达 作为一款自动化工具,亿可达被誉为国内版的免费Zaiper。它允许用户无需编程知识即可将不同软件连接起来,构建自动化的工作流程。其界面设计清新且直观,描述语言简洁易懂,使得用户可以轻松上手。 2、&…

剪画小程序:干货丨3款照片转换成动漫形象的工具,赶紧收藏!

打开工具剪画,主页找到“照片转动漫”功能,上传图片即可转为漫画照片 有多种动漫模型,包括动漫、普通、艺术风、素描风等,还有更多趣味玩法如黏土风、3D风、Jade(玉石风)、WaterColor(水彩风)等等 照片就漫…

Redis之常用实战场景

1.Redis数据丢失场景 1.1 持久化丢失 采用RDB或者不持久化,就会有数据丢失,因为是手动或者配置以快照的形式来进行备份。 解决: 启用AOF,以命令追加的形式进行备份,但是默认也会有1s丢失,这是在性能与数据安全性中寻…

HTML、HTML5一览

文章目录 HTML简介标签基本标签格式化文本链接图像块级元素列表表格框架表单实体 HTML5 此篇用于优化csdn第一篇文章 HTML 简介 HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言…

sublime如何写python

推荐一款好用且轻量级的编辑器——sublime—text3,sublime现在支持的语言有很多。 右边弹出的列表可以往下拉,亮点是支持了python,而且不需要安装任何的python环境,直接下载sublime就可以编写python代码并运行了。 使用方法&…

Java面经——SpringCloud微服务

SpringCloud SpringCloud的五大组件 注册中心网关远程调用负载均衡熔断降级 谈谈你对SpringCloud的理解 SpringCloud是为了解决微服务架构中出现的一系列服务治理难题的而提出的一套规范,统一了标准。降低了微服务架构的开发难度。有了 Spring Cloud 这样的技术生…

Three.js——基础纹理、凹凸纹理、法向贴图、环境贴图、canvas贴图

个人简介 👀个人主页: 前端杂货铺 ⚡开源项目: rich-vue3 (基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL) 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 &#x1…

linux嵌入式设备测试wifi信号强度方法

首先我们要清楚设备具体链接在哪个wifi热点上 执行:nmcli dev wifi list rootubuntu:/home/ubuntu# nmcli dev wifi list IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS > * 14:EB:08:51:7D:20 wifi22222_5G Infr…

香橙派安装 opencv 4.9.0

香橙派Orange AI Pro / 华为昇腾310 使用源码方式安装opencv 4.9.0 下载源码到香橙派 https://opencv.org/releases/ 解压 unzip opencv-4.9.0.zip进入解压后的文件 cd opencv-4.9.0创建构建目录build mkdir build进入目录 cd build使用cmake配置后续的构建环境 cmake -D…

SwiftUI 利用 Swizz 黑魔法为系统创建的默认对象插入新协议方法(二)

功能需求 在 SwiftUI 的开发中,我们往往需要借助底层 UIKit 的“上帝之手”来进一步实现额外的定制功能。比如,在可拖放(Dragable)SwiftUI 的实现中,会缺失拖放取消的回调方法让我们这些秃头码农们“欲哭无泪” 如上图所示,我们在拖放取消时将界面中的一切改变都恢复如初…

SpringBoot校园疫情管理系统-计算机毕业设计源码81164

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园当然也不例外。校园疫情管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用J…