ble数据包分析

【ble数据包分析】bleBroadcast数据包的内容可以动态更改吗?它涉及ble蓝牙通信客户端(打开、扫描、连接、发送和接收数据、分包和解包)和服务器(初始化广播数据、开始广播、配置服务和服务器回调操作)的整个链路而文件的传输就是将设备中的文件拆解成数据包,通过ble发送到App 。
1、关于BLE需要知道的蓝牙是一种无线技术标准,可以实现固定设备、移动设备和个人局域网之间的短距离数据交换 。现在蓝牙由BluetoothSpecialInterestGroup(简称SIG)管理 , 负责监督蓝牙profile的开发,管理认证项目 , 维护商标权 。厂商的设备必须符合蓝牙技术联盟的标准,才能作为“蓝牙设备”进入市场 。
经典蓝牙模块多用于蓝牙音频模块,因为音频需要大比特流数据传输,更适合使用经典蓝牙 。BLE(蓝牙)是对传统蓝牙技术的补充 。虽然BLE和传统蓝牙都被称为蓝牙标准,并共享无线电频率,BLE是一种完全不同的技术 。BLE与传统蓝牙不兼容 。它专为小数据速率和离散传输应用而设计 。
2、nRFSniffer抓取BLE广播包一些设置先决条件:nRFSniffer包抓取环境已经构建 。打开wireshark软件启动动态抓取包 。包捕获页面如下:如果只需要扫描一个通道,则需要上图中的AdvHop设置,默认值为37、38、39 。只需将其更改为37,然后单击旁边的箭头 。选择任意一条数据,双击打开数据协议分析,根据ble协议文件查看 。数据显示列设置:在任意要编辑的列中 , 右键单击标题名称 。根据自己的填报类型 , 选择dalta时差即可查看两者的时差数据包 。添加RSSI列:整体数据过滤MAC: btle 。广告地址CC: 00: 01: AA: 15: 36这个设备的播放频率是5Hz,而且只在37个频道播放,所以基本都能看到 。
3、Android低功耗蓝牙(BleAndroid从4.3(APILevel18)开始支持低功耗蓝牙,但是只支持中央模式 , 也就是说Android设备只能主动扫描链接其他外围设备 。从Android5.0(APILevel21)开始支持这两种模式 。低功耗蓝牙的开发是一个比较偏的技术,实际开发有很多坑 。网上有很多介绍使用和总结经验的文章 。
4、iOSBle开发丢包问题最近我们一直在开发通过ble在设备和App之间进行交互的产品 。在发展过程中 , 手机一直是中心设备,负责主动发起扫描连接,而设备是边缘设备 。Demand既需要发送指令,也需要传输文件 。文件的传输是将设备中的文件拆解成数据包 , 通过ble发送给App 。在设备和App定义的一个共同协议的基础上,两者之间的指令发送是正常的,因为指令发送是简短的、单一的,双方处理起来都没有问题 。
当时设置的设备向App发送数据,拆分数据包的大小为180字节,在iphone6s上已经达到上限 。但发送文件时,App上接收的数据会丢失 。一开始怀疑是设备端没有发送数据 。后来设备端改变了发送逻辑 。每发送一个数据包后,收到底层成功回调后,再发送下一个数据包 。在这种模式下,App端接收到的数据仍然会丢失 。
5、BleMesh总结bl mesh依赖于低功耗蓝牙 。低功耗蓝牙技术是蓝牙Mesh使用的无线通信协议栈 。蓝牙有三种通信模式:一对一、多对一和多对多 。BleMesh采用多对多的通信方式,Mesh网络中的所有设备都可以相互通信 。不加入网状网络的设备被称为未供应设备;已经加入网状网络的设备被称为节点;将无网络分布的设备转化为节点的过程称为供应;一个节点有多个组件,每个组件都可以独立控制,每个组件称为一个元素 。一个元素有很多情况,叫做state(状态),比如GenericOnOff状态;属性表示特定含义的数据消息(Message)用于操作状态值,分为GET、SET、STATUS三种,SET消息分为responsive/responsive 。
6、Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据,分包解包(附...物联网时代已经来临 , ble蓝牙开发在其中扮演着轻松的角色 。最近正好闲着,就抽空整理一下这一块的知识点 。涉及到ble蓝牙通信客户端(打开、扫描、连接、发送和接收数据、分包和解包)和服务器(初始化广播数据、开始广播、配置服务、服务器回调操作)的整个环节和一些常见问题,也就是一些被踩过的坑 。比如1 。由于不同版本安卓或不同手机的适配问题,蓝牙设备无法扫描 。2.如何避免ble蓝牙连接出现133错误?
7、 ble广播 数据包的内容能动态改变吗

    推荐阅读