- 我不懂运营
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!
BLE的设备可以发出广播信号,其信号占用的通道是37,38,39通道
设备可以选择广播在其中的任何一个,两个或全部三个通道
BLE4.0-BLE4.2支持的最大广播payload包长是31字节;BLE5.0增加了扩展模式,以数据通道发送额外的数据,使得广播支持的最大payload包长是254字节。
除了广播的31字节以外,还支持在扫描回复内容中包含最多31字节的数据。
这两者的区别是:广播的内容会持续定期发送,不管有没有接收者;而扫描回复内容只有在主机发送扫描命令后,设备才会在扫描回复中携带此内容 。
以下是一个典型的广播-扫描-回复过程。
广播内容和扫描回复内容的格式定义是通用的。都是长度+数据的方式,其中数据又分成类型+实际数据,如下图
格式定义字段(Flags)是一个字节的配置字段,是唯一一个必须包含的字段,用于指示设备是否可以被搜到、是否支持传统蓝牙,是否支持可被连接等。
UUID是一种唯一代号,一般每个service会对应一个UUID,一个设备可以有多个UUID。
一个完整的UUID是128bit,也可以以32bit或16bit缩写的方式表示。
通过此字段,可以选择将全部或部分UUID广播出来。
名称字段(Local Name)决定了设备在手机中搜索出来的名字
厂商自定义字段(Manufacturer Specific Data)是我们可以自己定义其内容的字段。其中也预定义了一些厂商,在 Bluetooth官方网站 可以查到,这些都是交了会员费的成员。
如果我们自己用,也可以完全自定义内容
其他字段可以参考蓝牙标准,或者 其他网站 说明。
注意:广播和扫描字段内容均不能超过31字节,并且要特别注意每个字段中的Length要与Data匹配,否则可能会造成某些手机能搜到广播某些搜不到的奇怪现象。
CC264x中,广播内容和扫描回复内容要分别设置。
定义两个数组缓冲
使用GapAdv_loadByHandle()函数加载缓冲内容
之后调用GapAdv_enable()打开广播即可
如果在广播已经开启后,要修改广播内容,有两种方法
方法一:使用GapAdv_prepareLoadByHandle()和GapAdv_loadByHandle()方法
方法二:使用GapAdv_prepareLoadByBuffer() 和 GapAdv_LoadByBuffer()方法
注意:对于某些SDK(例如CC13x2_26x2 SDK 3.20.00.68, 3.40.00.02),有 已知BUG ,方法二只能用于更新广播,而不能用于更新扫描数据。
https://blog.c**.net/slimmm/article/details/100583655
https://blog.c**.net/zzfenglin/article/details/56064808
https://www.novelbits.io/bluetooth-low-energy-advertisements-part-1/
https://www.novelbits.io/bluetooth-low-energy-advertisements-part-2/
https://s***********.com/questions/40250621/does-the-ble-spec-allow-for-manufacturer-ad-type-in-both-advertising-data-and-sc
https://s***********.com/questions/33535404/whats-the-maximum-length-of-a-ble-manufacturer-specific-data-ad
https://e2e.t.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/845470/cc2642r-updating-scan-response-data-via-gapadv_loadbybuffer
ble是什么意思?
意思是低功耗蓝牙。蓝牙低能耗(Bluetooth Low Energy,或称Bluetooth LE、BLE,旧商标Bluetooth Smart)也称低功耗蓝牙,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。兼容性:低功耗蓝牙不能向后兼容原有的蓝牙协议(下文称经典蓝牙)。低功耗蓝牙与经典蓝牙使用相同的2.4GHz无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙使用的调变系统更简单。2023-07-23 22:11:541
蓝牙ble是什么
BLE是Bluetooth low energy的意思,属于蓝牙低功耗协议,ANDROID4.3及苹果手机等现在都支持蓝牙BLE,主要面向传感器应用市场,进行短时间小数据传输,如健康领域:手机监测血压,体育:手机计步器等。2023-07-23 22:12:095
蓝牙BLE,什么是蓝牙BLE
蓝牙4.0就是BLE的一种,BLE还包括蓝牙4.1、蓝牙4.2以及后续的版本。2023-07-23 22:12:542
【翻译】BLE简介
Bluetooth Low Energy (BLE),也经常被称为 Bluetooth Smart ,它是传统蓝牙的子集,在Bluetooth 4.0 core specification中被引入。虽然BLE和传统蓝牙有很多重叠的地方,但是它是有自己独特的历史血统的,BLE被Bluetooth SIG即蓝牙标准纳入之前,一直是诺基亚发展的一个叫做Wibree的室内项目。 对工程师们来说虽然有很多种的无线协议可供选择,但是BLE是实现和现代移动平台通信的最简单的方式,尤其是对于苹果设备而言,BLE可以说是唯一的可以避免为了成功的提交苹果商店的硬件设计选择。 以下的简介将使你有一个快速对BLE的总体的了解,尤其是数据如何组织,以及设备如何通过广播来告之其存在,让你可以连接他们并进行数据的传输。 以下列出的设备和平台均支持蓝牙 4.0和BLE: GAP是 Generic Access Profile 的缩写,它控制着蓝牙的连接和广播过程。GAP协议使得设备可以被其他设备识别,并决定两个设备如何交互。 GAP为设备定义了各种各样的角色,但两个最关键的概念是中心设备( Central devices)和周边设备( Peripheral * devices)。 周边设备是指那些体积较小,功耗较小,资源有限的设备,它可以连接更加强大的中心设备,例如各种手环,手表,心跳检测器等;中心设备通常指的是手机或者平板等拥有更强大的计算和存储的设备。 下图可以详细的说明了整个广播的过程,以及广播负载和扫描回复负载是如何工作的。 周边设备会设置一个特定的广播的时间间隔(Advertising Interval),每个时间段的开始,它会发送其广播数据包,时间间隔越长节省电量,但是不能及时被扫描到。这是很明显的道理。 周边设备的广播包括两种,一种是Advertising data,一种是scan response data,广播数据就是上面所说的,是必选,每一广播间隔开始都会不间断发送,通过它来告诉中心设备自己的存在;扫描回复则是可选的,它包含了设备的基本信息,比如设备的名字和地址等,只有当中心设备对他感兴趣,发送扫描回复请求时,周边设备才会发送扫描回复数据包作为反馈。 尽管大多数情况下,周边设备广播自己都是为了建立连接后使用GATT services、characteristics完成更多的双向的数据交换,但也有些情况是不需要连接的,只需要周边设备将数据广播出去即可。 这种情况主要存在于需要周边设备 同时 给多个中心设备发送数据,而一旦建立连接,数据的收发就只对在建立连接的两台设备间可见。 周边设备可以发送一段包含少量自定义数据的 31字节 的广播或者扫描回复包给在监听范围的所有设备,这就是典型的BLE广播的过程。 通俗点的讲就是BLE的广播有两种作用,一种是告诉中心设备自己的存在然后等待连接;另一种就是单纯的对外广播信息,苹果的iBeacon就是后者的定性应用,它在广播包Manufacturer Specific Data中插入了一段自定义的数据,用来完成特定的功能。 周边设备和中心设备一旦建立连接,周边设备的广播过程就停止了,也不能再发送广播包了,接下来就要通过GATT services和characteristic进行通信。 GATT全称 Generic Attribute Profile ,中文名叫通用属性协议,它定义了 services 和 characteristic 两种东西来完成低功耗蓝牙设备之间的数据传输。它是建立在通用数据协议 Attribute Protocol (ATT) ,之上的,ATT把services和characteristic以及相关的数据保存在一张简单的查找表中,该表使用16-bit的id作为索引。 一旦两个设备建立了连接,GATT就开始发挥作用,同时意味着GAP协议管理的广播过程结束了。但是必须要知道的是,建立GATT连接必要经过GAP协议。 最重要的事情,GATT连接是 独占的 ,也就意味着一个BLE周边设备同时只能与一个中心设备连接。一旦周边设备与中心设备连接成功,直至连接断开,它不再对外广播自己的存在,其他的设备就无法发现该周边设备的存在了。 周边设备和中心设备要完成双方的通信只能通过建立GATT连接的方式。 下图展示了BLE设备如何工作的。一个周边设备只能同时连接一台中心设备,但是中心设备可以连接多台周边设备。 如果两个周边设备需要进行数据的交换的话,就必须经由中心设备的中转。 一旦周边设备和中心设备建立了连接,通信就是双向的了,对比前面的GAP广播的网络拓扑,通信是单向的,只能由周边设备往中心设备广播数据。 GATT是基于典型的C/S模式,其中周边设备通常扮演 GATT Server ,它保有services、characteristic以及查找表,也就是数据的存储是在 GATT Server 中;而例如手机平板等中心设备通常是 GATT Client ,他们向 GATT Server 发送请求。一切都是主设备GATT Client发起,然后接受来自从设备GATT Server的相应。 当连接建立之后,周边设备会给中心设备建议一个连接间隔(Connection Interval),然后中心设备每个时间间隔都会重连查看是否有新数据可以获取。但是这个连接间隔只是一个建议,因为中心设备可能忙于与其它周边设备通信或者系统资源不可得而并不能完全遵循。 下图展示了周边设备和中心设备的数据交换的流程,可以看出每一次事务都是由中心设备发起的,而周边设备只负责应答。 BLE GATT通信是基于嵌套的 Profiles , Services and Characteristics 结构之上的,下图是其框架: Profile并不是真实存在的一种结构,而是多个完成某一特定功能services的集合,或者说是对这个特定结合的功能的描述,或者名称。以 Heart Rate Profile 为例,它包括Heart Rate Service 和 Device Information Service,他们都是为了完成测量心率这个功能而存在的service。 更详细的可以查看 Profiles Overview 。 每个service拥有一个唯一标识UUID,可以是官方认证的16bit的id,也可以是128位的自定义id。service是GATT数据的逻辑分类,它包含一个或者多个characteristic。 官方通过了一些标准 Service,完整列表在 这里 。以 Heart Rate Service 为例,可以看到它的官方通过 16 bit UUID 是 0x180D ,包含 3 个 Characteristic: Heart Rate Measurement , Body Sensor Location 和 Heart Rate Control Point ,实现该service第一个 Heart Rate Measurement 是必选的,其他两个是可选的。 Characteristic也拥有一个16-bit 或者128-bit的UUID,它是GATT通信中的最小的逻辑数据单元,它封装了一个单一的数据点,当然这个数据点可能包含一组相关的数据,比如加速度传感器的x/y/z三个坐标轴的数据。 实际上,和 BLE 外设打交道,主要是通过 Characteristic。你可以从 Characteristic 读取数据,也可以往 Characteristic 写数据。这样就实现了双向的通信。你可以使用Characteristic实现一个类似串口(UART)的 Sevice,这个 Service 中包含两个 Characteristic,一个被配置只读的通道(RX),另一个配置为只写的通道(TX)。2023-07-23 22:13:201
英语单词中的后缀 ble 有没有详解
treble也可做动词用。-ble 是-able 的变形。-able 可加在动词后面,将其变成形容词,并具有“能...的:意思。如:changeable可变的;reliable可靠的。注意事项:1. 辅音字母+y结尾的,变y 为i再加able,如rely-reliable. 2. 元音字母+不发音e结尾的,去e加able.如:value-valuable. 其他形式一律直接加-able。3. 以[s]音结尾的,一般须加ible,意思一样。如:flexible = flex(bend)+ible。4. 这类形容词变副词时,要去e加y.如:com-fort-ably; reasonably; possibly; trebly.5. 带-ble的动词,通常是由拉丁语或法语引用进英语来的。2023-07-23 22:13:302
ble代表什么颜色
ble是blue的简写,代表蓝色。blue 英 [bluu02d0] 美 [bluu02d0] adj. 蓝色的;忧郁的;沮丧的;色情的n. 蓝色The pots are made with blue enamel.这些锅上有蓝色的搪瓷。短语1、blue baby 青紫婴儿2、blue background 蔚蓝的背景3、blue bedcover 蓝色床罩4、blue blood 名门出身2023-07-23 22:13:461
低功耗蓝牙BLE协议栈简介
BLE,blooth low power,即蓝牙低功耗技术。 该技术具有低成本、短距离、可互操作的特性,工作在免许可的2.4GHz ISM射频频段。 蓝牙系统核心包括射频收发器,基带和协议栈。核心系统协议包括射频(RF)协议、链路控制(LC)协议、链路管理(LM)协议、逻辑链路的控制和适配(L2CAP)协议。 蓝牙核心系统最底三层是射频,链路控制,链路管理协议,通常会把这三者归为一个子系统——蓝牙控制器。把往上的其他层一起称为为蓝牙主机。在蓝牙控制器和蓝牙主机之间实现通信通常需要有主机-控制器接口,Host to Controller Interface(HCI)。蓝牙系统的具体应用apps,就是建立在蓝牙主机之上。而host部分由蓝牙软件厂商开发和维护,control部分由蓝牙的硬件厂商提供,两部分通过hci(主机控制器接口)进行通信和数据交互。 厂商提供的测试模块,可以通过HCI或者串口直接控制蓝牙的物理层来让它收发数据包 负责数据和语音的发送和接收,特点是短距离、低功耗。蓝牙天线一般体积小、重量轻,属于微带天线。 1Mbps自适应跳频GFSK(高斯频移键控),运行在免费的工业频段2.4GHz。 LL层为RF控制器,控制设备处于准备(standby)、广播、监听/扫描(scan)、初始化、连接,这五种状态中一种。 五种状态切换描述为:未连接时,设备广播信息,另外一个设备一直监听或按需扫描,两个设备连接初始化,设备连接上了。 发起聊天的设备为主设备,接受聊天的设备为从设备,同一次聊天只能有一个意见领袖,即主设备和从设备不能切换。 HCI层为接口层,向上为主机提供软件应用程序接口(API),对外为外部硬件控制接口,可以通过串口、SPI、USB来实现设备控制。 L2CAP层提供数据封装服务,允许逻辑上的点对点通讯。 基于包的协议,将包传输到HCI,对于无主机系统,就将包传给链路管理器LM。支持多路复用,包的分割和重组,以及向上层协议提交服务质量信息。 SM层提供配对和密匙分发,实现安全连接和数据交换。 ATT层负责数据检索,允许设备向另外一个设备展示一块特定的数据称之为属性,在ATT环境中,展示属性的设备称之为服务器,与它配对的设备称之为客户端。链路层的主机从机和这里的服务器、客服端是两种概念,主设备既可以是服务器,也可以是客户端。从设备毅然。 GATT层定义了使用 ATT 的服务框架和配置文件(profiles)的结构。BLE 中所有的数据通信都需要经过GATT。 它定义两个 BLE 设备通过叫做 Service 和 Characteristic 的东西进行通信。GATT 就是使用了 ATT(Attribute Protocol)协议,ATT 协议把 Service, Characteristic遗迹对应的数据保存在一个查找表中,次查找表使用 16 bit ID 作为每一项的索引。 GAP直接与应用程序或配置文件(profiles)通信的接口,处理设备发现和连接相关服务。另外还处理安全特性的初始化。对上级,提供应用程序接口,对下级,管理各级职能部门,尤其是指示LL层控制室五种状态切换,指导保卫处做好机要工作。 GAP给设备定义了若干角色,其中主要的两个是:外围设备(Peripheral)和中心设备(Central)。 外围设备 :这一般就是非常小或者简单的低功耗设备,用来提供数据,并连接到一个更加相对强大的中心设备。例如小米手环。 中心设备 :中心设备相对比较强大,用来连接其他外围设备。例如手机等.2023-07-23 22:14:011
Bluetooth BR/EDR和BLE的区别.md
(资料来自网络搜集) Bluetooth BR / EDR(蓝牙基本速率/增强数据速率)和BLE是蓝牙核心规范中的两个主要蓝牙技术,它们之间存在以下几个主要区别。 物理通道 所有无线电通信均发生在预定义的频道上,并且BLE使用的信道与Bluetooth BR / EDR略有不同,特别是BLE 引入了广播信道。 BR / EDR:79个频道,频道索引为0u301c78,覆盖范围2400u301c2483.5MHzu200b BLE:40个频道,频道索引为0u301c39,覆盖范围为2400u301c2483.5MHz,其中频道37、38和39为广播频道(ble 5.2 允许使用其他的频道进行第二广播) 能量消耗 低功耗是BLE的一大亮点。仅使用纽扣电池,BLE设备即可运行数月甚至数年。蓝牙智能的灵活配置还可以使应用程序更好地管理连接间隔(连接间隔),从而优化接收器的占空比。对于蓝牙BR / EDR,由于其较高的数据吞吐量,因此功耗会相应增加。 拓扑结构 BR / EDR支持星形拓扑的Piconet,也支持Scatternet的Piconet。在Scatternet中,每个微微网都有一个主设备,而从属设备可以基于时分复用参与不同的微微网。u200b BLE 4.1版本支持“双模式”,该模式允许BLE设备同时扮演“中央”和“外围设备”两个角色。支持中心角色的设备可以启动与外围设备的连接,而支持中心角色的设备也可以用作外围设备以连接到其他中心设备。将来,它还将支持BluetoothSmart Mesh(5.2已经支持) 开发方式 BLE开发非常灵活,开发人员可以借助蓝牙技术联盟使用的配置文件更灵活地自定义应用程序。无论开发人员想要构建哪种应用程序场景,灵活的配置文件定义都可以满足技术要求。 BR / EDR技术相对成熟,并且其开发是模块化的,因此通常只需要将模块集成到产品中即可。例如,在开发Beacon应用程序时应选择BLE,因为BR / EDR不支持Beacon应用程序 配对 配对对于蓝牙BR / EDR是必需的,但对于BLE能则是选择性的。 简单的BLE应用程序可能不需要配对。例如 ibeacon 等应用 数据吞吐量 BLE吞吐量约为1 Mbps(如规格中所述),但还取决于应用场景。 蓝牙BR / EDR吞吐量超过2Mbps,适用于高质量音频比特流或其他需要维持更高带宽连接的应用。 Profile 通用属性配置文件(GATT)可以由应用程序或其他配置文件调用,以允许客户端与服务器进行交互。当前,有许多使用GATT构建的配置文件。 联网能力 蓝牙技术联盟提供了三种基于BLE 的联网能力,RESTFul API,HTTP代理服务(HPS)和互联网协议支持配置文件(IPSP)的Internet访问方式。他们都需要网关设备进行连接。网关设备可以是任何可以访问Internet的设备,例如路由器,机顶盒,甚至是家里闲置的智能手机。 BLE的Internet功能使物联网更加可靠且易于实现。2023-07-23 22:14:082
安卓BLE开发笔记(一) BLE协议入门
最近遇到了一个BLE的项目,花时间恶补了下相关的知识,这里记录下来备忘。这篇笔记是纯协议的,先大概了解ble的协议和流程,能帮助我们更好的编码 Ble设备的发现实际上靠的是Advertising(广播)机制。广播也有人管它叫做Beacon,我没有在官方文档里面查找到这个词,但是从网络上的文章来看,它们差不多就是同一个东西。 基于广播发现Ble设备有两种方式: 由于这两种方式都基于广播,所以它们的数据格式是一样的。广播会自带一些信息,例如设备的名称、MAC地址等。除了自带的数据之外,我们还能携带一些额外的信息数据。根据 官方 的 文档 ,可以看到这个额外数据的具体格式如下: 可以看到广播数据里面包含多个AD Structure。每个AD Structure分为两个部分:数据段长度(1字节)+数据段(N字节)。数据段又分为头1个字节的AD Type标识类型和剩余的AD Data具体数据。 注意看最后的Non-significant part,有时候在安卓的回调里面会在byte数组的最后看到一堆的0x0,这个实际上也是定义在协议里面正常的无意义数据,我们直接忽略它们就好。 举个实际的例子,在手机上使用ble搜索应用搜索我司开发的蓝牙设备,查看其广播数据: 可以看到广播数据0x0319C703020104030312180C094D41584559455F353146300C16791300000002000000735C,实际有5个AD Structure。 AD Type如上图所说可以去蓝牙协议的 官方 查看[Generic Access Profile文档]( https://btprodspecificationrefs.blob.core.windows.net/assigned-numbers/Assigned Number Types/Generic Access Profile.pdf),可以看到这五个字段类型分别是: 根据这里找到的DataType我们又可以去 官方 的 Core Specification Supplement 10文档 查看Value的具体格式。这里我就不展开了。 虽然基于广播的机制我们已经能够实现手机与Ble设备的通信了,但是这种通信能实现的功能比较基础。所以Ble的协议还支持连接之后一对一的通信方式。 Ble的连接都基于 GATT (Generic Attribute Profile) 协议之上,GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范。 GATT的结构如下: Ble设备里面会提供多个Service,这些Service会提供一些特定的功能。而每个Service里面有会有多个Characteristic,这些Characteristic里面的value实际就是功能具体的属性值。 例如电池服务Battery Service里面就有一个Characteristic叫做Battery Level,手机可以读取这个Characteristic的value值来获取Ble设备当前的电量。 我们来看看实际设备读取出来的数据: 可以看到这里有Generic Access、Generic Attribute、Device Information三个Service。而Device Information Service下面又有四个Characteristic 这些Service、Characteristic都会有一个UUID去做标识,例如Generic Access Service的UUID是0x1800。虽然我们这里看到的UUID都是16bit的,但是实际上它们的完整形式应该是0x0000xxxx-0000-1000-8000-00805F9B34FB。中间的xxxx就是截图中显示的16位uuid,即Generic Access Service的完整UUID是0x00001800-0000-1000-8000-00805F9B34FB。 Service的UUID映射表可以到 官方 的[16-bit UUIDs文档]( https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit UUID Numbers Document.pdf)查看。 截图里面的Characteristic的Properties都是READ,代表这个Characteristic是可读取的。它实际上是描述了这个Characteristic可以如何使用。Properties在安卓ble的sdk里面靠一个int类型的变量表示,每一个二进制位都标识了一直能力。我们可以通过按位与的方式判断是否支持: 上面的机制实际上我只验证了Read、Write、Notify。其他的我都是根据根据 官方 的 文档 的“Table 3.5: Characteristic Properties bit field”表格自己理解的,可能会有错误,大家可以参考官方文档去理解。 除了Properties之外,Characteristic还有一个十分重要的数据段叫做Descriptors。一个Characteristic可能有0个或者多个Descriptor去描述它。 例如当一个Characteristic是Notify或者Indicate的时候它会携带一个Client Characteristic Configuration Descriptor(uuid 0x2902)描述当前Characteristic是否打开通知功能。也就是说通知功能是可以通过修改Client Characteristic Configuration Descriptor主动打开或者关闭的,通过Descriptor携带数据的二进制位去标识功能的打开关闭: Descriptor的UUID映射表同样可以到 官方 的[16-bit UUIDs文档]( https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit UUID Numbers Document.pdf)查看。 MTU指的是最大传输单元MAXIMUM TRANSMISSION UNIT,表示一次数据传输最多能传多大的数据,我们直接看它的官方说明: 可以看到我圈出来的地方,MTU最小需要支持23个字节,但是实际上这23三个字节也不是全部用来放数据,它的头三个字节需要携带操作类型和属性的16位uuid。所以只剩下23-3=20个字节用于传输数据: 这里实际上有个坑,安卓默认MTU就是23也就是每次最多只能写入20字节的数据,所以最开始我写入一些比较大的数据的时候直接就失败了。需要先使用requestMtu将mtu设大。2023-07-23 22:14:281
BLE数据传输丢包的分析
像所有的网络传输协议一样,应用层能感知到的丢包有可能产生于应用层之下的所有层。 对于蓝牙BLE而言,进一步细化从机到主机的数据传输场景(假设使用的是Notify方式传输),其数据传输路径为: 1、从机的应用层产生数据。 2、从机将数据从Host上位机转交给Controller下位机。 3、从机Controller通过调制器,将数据在连接事件的射频Tx阶段发出。 4、主机Controller同时开启射频Rx阶段,接收无线电波并通过解调器还原数字信号。 5、主机将数据从Controller下位机转交给Host上位机。 6、主机的应用层接收数据。 根据上面的流程,进一步分析一下可能产生数据丢包的环节。 在步骤2中,Host调用HCI函数将数据提交给Controller发送之前,会先将数据存放在Controller的数据缓冲区中,不同的蓝牙芯片这个缓冲区的大小不同,比如Ti CC2541的射频缓冲区只有4个PDU(4*20字节)的大小。在缓冲区存满后继续调用HCI的Notify等函数会返回缓存区满状态位标识。这是第一个有可能产生丢包的位置,若缓冲区满且开发者没有对此状态位进行校验,则应用层产生的数据会在传递给链路层之前丢失。 在步骤3、4中,从机的Controller在连接事件的Tx阶段,会通过射频依次发送缓冲区数据,并在下一个Rx阶段根据捕获和解析对端主机的数据包,从其链路层报头中读取NESN来确认其在上一个Tx阶段发送的数据包是否被对端主机链路层正确接收。由于链路层数据包序列号校验机制(SN和NESN)和重传机制的存在,基本可以保证数据在物理层和链路层阶段不会产生丢包,这跟互联网的传输层TCP协议校验数据包序列和完整性基本类似。 之所以上面用“基本”二字,是因为这里还是存在第二个有可能产生丢包的位置。由于BLE中使用的CRC校验是弱CRC,其只能保障传输字节的全部偶数位和部分奇数位不产生错误,并无法保证所有数据在传输过程中不出错。那么一个可能性极小的场景是:CRC弱校验通过,但实际上NESN出现了错误,而将本来应该是0的位识别成了1,或者相反。而这个位差错让本来应该是错误的序列号交替变成了正确的。 在步骤5中,主机将数据从Controller向上派发到Host,并转到应用层触发回调通知。这里是第三个可能产生丢包的地方。原因同步骤2,但这里还有一点小区别,就是notify跟indicate的区别(反向传输中的write with/without response也是同理),其本质区别是数据接收成功的判断标志是以链路层确认为准还是以应用层确认为准。前者是notify采用的方式,而后者是indicate采用的方式。可见如果采用notify做数据传输,链路层到应用层这一步依然是有丢包的可能,比如链路层的数据传输速率大于应用层的回调函数中对数据处理的速率,导致Host中数据缓冲区持续增长,当缓冲区满后,主机的Controller将丢弃无法继续保存的数据,并不会通知对端设备重传。 而indicate方式下,每一个数据包的成功确认都是以应用层回调处理执行完成为标志,而通常数据的逻辑处理是一个耗时的操作,并且由于数据是在连接事件内接受到,但同一个连接事件在开始的时候主从机两端的数据就已经准备好,由于连接事件的持续事件极短,在这段时间内Controller的所有工作都集中在射频的发射上,而不会从Host上位机接受数据和响应,甚至有的蓝牙芯片会有选项在这段时间内直接挂起CPU,以防止其他中断信号同步到达,干扰到射频数据的发送效率。所以在indicate方式下,一个数据包至少要横跨两个甚至更多的连接事件时长才可以确认到达,从而发送下一个数据包,这就是有响应的数据发送方式比无响应要慢的原因。 最后一点,由于Android操作系统封装了蓝牙低层驱动和实现,以上的6个步骤即使都正确完成,也只是意味着Bluez或者Bluedroid这一层正确拿到了数据,但App要接收到这些数据还存在一个从操作系统到App的数据派发过程,indicate的数据确认是在App得到数据派发并执行完成回调后确认,但notify会在Bluedroid接受到数据后即完成链路层确认。而Bluedroid向App的数据派发又存在一个缓冲区,当蓝牙连接而App没有运行的情况下缓冲区满依然会产生丢包。(Android好像很难模拟这种情况,iOS在通过调试器终止App进程的时候经常会造成蓝牙连接链路不同步断开)2023-07-23 22:14:351
ble12是什么蓝牙
低功耗蓝牙。BLE是Bluetooth Low Energy的缩写,即低功耗蓝牙,是蓝牙规范的一个子集,从蓝牙4.0版本开始引入。蓝牙(Bluetooth)是一种无线数据与语音通信的开放性全球规范,它以低成本的短距离无线连接为基础,可为固定的或移动的终端设备提供廉价的接入服务。2023-07-23 22:14:421
电商ble是什么意思
以信息网络技术为手段售卖低功耗蓝牙。电商ble是指以信息网络技术为手段售卖低功耗蓝牙,电商即电子商务,是指以信息网络技术为手段,以商品交换为中心的商务活动。BLE是BluetoothLowEnergy的缩写,即低功耗蓝牙,是蓝牙规范的一个子集,从蓝牙4.0版本开始引入。2023-07-23 22:14:491
蓝莓ble是啥
您要问的是蓝牙BLE是啥?蓝牙技术的一种低功耗版本,也称为蓝牙4.0。BLE是BluetoothLowEnergy的缩写,相较于传统蓝牙技术,BLE使用更少的能量进行通信,从而延长了设备的电池寿命。BLE还可以通过广播的方式向周围的设备发送信息,从而实现定位和通信的目的。2023-07-23 22:14:561
蓝牙4.0,蓝牙BLE模块,蓝牙4.0和蓝牙BLE的区别
一、关于蓝牙4.0 蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙Classic Bluetooth)和低功耗蓝牙部分(Bluetooth Low Energy)。这两个部分适用于不同的应用或者应用条件。传统蓝牙是在之前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,低功耗蓝牙是Nokia的Wibree标准上发展起来的。 传统蓝牙可以用与数据量比较大的传输,如语音,音乐,较高数据量传输等,低功耗蓝牙这样应用于实时性要求比较高,但是数据速率比较低的产品,如遥控类的,如鼠标,键盘,遥控鼠标(Air Mouse),传感设备的数据发送,如心跳带,血压计,温度传感器等。传统蓝牙有3个功率级别,Class1,Class2,Class3,分别支持100m,10m,1m的传输距离,而低功耗蓝牙无功率级别,一般发送功率在7dBm,一般在空旷距离,达到20m应该是没有问题的。所以蓝牙4.0是集成了传统蓝牙和低功耗蓝牙两个标准的,并不只是低功耗蓝牙。 蓝牙4.0是蓝牙3.0+HS规范的补充,专门面向对成本和功耗都有较高要求的无线方案,较3.0版本更省电、低成本和跨厂商互操作性、3毫秒低延迟、超长有效连接距离、AES-128加密等;蓝牙4.0可广泛用于卫生保健、体育健身、家庭娱乐、安全保障等诸多领域。通常用在蓝牙耳机、蓝牙音箱、计步器、心律监视器、智能仪表、传感器物联网等设备上,大大扩展蓝牙技术的应用范围。该技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。蓝牙4.0支持两种部署方式:双模式和单模式。 双模式中低功耗蓝牙功能集成在现有的经典蓝牙控制器中,或再在现有经典蓝牙技术(2.1+EDR/3.0+HS)芯片上增加低功耗堆栈,整体架构基本不变,因此成本增加有限。单模式面向高度集成、紧凑的设备,使用一个轻量级连接层(Link Layer)提供超低功耗的待机模式操作、简单设备恢复和可靠的点对多点数据传输,还能让联网传感器在蓝牙传输中安排好低功耗蓝牙流量的次序,同时还有高级节能和安全加密连接。超低的峰值、平均和待机模式功耗。u2665速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个。所有连接都使用蓝牙2.1加入的减速呼吸模式(sniff subrating)来达到超低工作循环。u2665跳频:使用所有蓝牙规范版本通用的自适应跳频,最大程度地减少和其他2.4GHz ISM频段无线技术的串扰。u2665主控制:更加智能,可以休眠更长时间,只在需要执行动作的时候才唤醒。u2665延迟:最短可在3毫秒内完成连接设置并开始传输数据。u2665范围:提高调制指数,最大范围可超过100米(根据不同应用领域, 距离不同)。u2665健壮性:所有数据包都使用24-bitCRC校验,确保最大程度抵御干扰。u2665安全:使用AES-128 CCM加密算法进行数据包加密和认证。u2665拓扑:每个数据包的每次接收都使用32位寻址,理论上可连接数十亿设备;针对一对一连接优化,并支持星形拓扑的一对多连接;使用快速连接和断开,数据可以再网状拓扑内转移而无需维持复杂的网状网络。二、关于蓝牙BLE BLE是蓝牙低能耗的简称(Bluetooh Low Energy)。蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。 蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。 双模芯片可以在目前使用标准蓝牙芯片的任何场合使用。这样安装有双模芯片的手机、PC、个人导航设备(PND)或其它应用就可以和市场上已经在用的所有传统标准蓝牙设备以及所有未来的蓝牙低能耗设备通信。然而,由于这些设备要求执行标准蓝牙和蓝牙低能耗任务,因此双模芯片针对ULP操作的优化程度没有像单模芯片那么高。 单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。相反,标准蓝牙技术(和蓝牙低能耗双模器件)通常要求使用至少两节AAA电池(电量是钮扣电池的10至12倍,可以容忍高得多的峰值电流),并且更多情况下最多只能工作几天或几周的时间(取决于具体应用)。注意,也有一些高度专业化的标准蓝牙设备,它们可以使用容量比AAA电池低的电池工作。 SKYLAB生产的蓝牙4.0模块就是低功耗的,而且是采用的nRF51822单模芯片,有兴趣可以去了解下!2023-07-23 22:15:171
BLE模块,什么是BLE模块
BLE,BluetoothLowEnergy,就是我们常说的低功耗蓝牙。BLE模块是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHzISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。BLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。SKYLABBLE蓝牙模块SKB360可以做主,也可以做从,更可以主从一体,http://www.skylab.com.cn/productview-45-lanyablemokuai_skb360.html,这个是我找到的有关BLE蓝牙模块SKB360的一些资料,希望对你有帮助。2023-07-23 22:15:241
android ble为什么自动断开连接
。2023-07-23 22:15:312
蓝牙4.0,蓝牙BLE模块,蓝牙4.0和蓝牙BLE的区别
蓝牙模块按协议划分主要分为两种: 经典(SPP)蓝牙模块:泛指蓝牙协议在4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐等较高数据量传输。经典蓝牙模块可再细分为:传统蓝牙模块和高速蓝牙模块。传统蓝牙模块在2004年推出,主要代表是支持蓝牙2.1协议的模块,在智能手机爆发的时期得到广泛支持。高速蓝牙模块在2009年推出,速率提高到约24Mbps,是传统蓝牙模块的八倍,可以轻松用于录像机至高清电视、PC至PMP、UMPC至打印机之间的资料传输。 低功耗(BLE)蓝牙模块:指支持蓝牙4.0版本及以上的模块,称为BLE模块,最大的特点是成本和功耗的降低,应用于实时性要求比较高的产品中,比如:智能家居类(蓝牙锁、蓝牙灯)、传感设备的数据发送(血压计、温度传感器)、消费类电子(电子烟、遥控玩具)等。 FEASYCOM公司这两款产品都有,满足不同群体的需求,需要更多了解可以去官网看看,总能找到一款适合的。2023-07-23 22:15:403
Android 低功耗蓝牙(Ble) 开发总结
Android 从 4.3(API Level 18) 开始支持低功耗蓝牙,但是只支持作为中心设备(Central)模式,这就意味着 Android 设备只能主动扫描和链接其他外围设备(Peripheral)。从 Android 5.0(API Level 21) 开始两种模式都支持。 低功耗蓝牙开发算是较偏技术,实际开发中坑是比较多的,网上有很多文章介绍使用和经验总结,但是有些问题答案不好找,甚至有些误导人,比如 :获取已经连接的蓝牙,有的是通过反射,一大堆判断,然而并不是对所有手机有用,关于Ble传输速率问题的解决,都是默认Android每次只能发送20个字节,然而也并不是,,,下面进入正文。 这里用的是 Android5.0 新增的扫描API, 这里说一下,如果做蓝牙设备管理页面,可能区分是否是已连接的设备,网上又通过反射或其他挺麻烦的操作,也不见得获取到,官方Api 就有提供 与外围设备交互经常每次发的数据大于 mtu的,需要做分包处理,接收数据也要判断数据的完整性最后才返回原数据做处理,所以一般交互最少包含包长度,和包校验码和原数据。当然也可以加包头,指令还有其他完整性校验。下面分享几个公用方法: 我自己封装的一个BleUtil ,因为涉及跟公司业务关联性太强(主要是传输包的协议不同)就先不开源出来了,如果这边文章对大家有帮助反馈不错,我会考虑上传个demo到github供大家使用, 在这先给大家推荐一个不错 Demo ,里面除了没有分包,协议,和传输速率。基本的功能都有,而且调试数据到打印到界面上了。最主要是它可以用两个个手机一个当中心设备一个当外围设备调试。 首先传输速率优化有两个方向,1 外围设备传输到Android 。2 Android传输到外围设备。 我在开发中首先先使用上面那位仁兄的demo调试,两个Android 设备调试不延时,上一个成功马上下一个,最多一秒发11个20字节的包。 后来和我们的蓝牙设备调试时发现发送特别快,但是数据不完整,他蓝牙模块接收成功了,但是透传数据到芯片处理时发现不完整,我们的硬件小伙伴说因为 波特率 限制(差不多每10字节透传要耗时1ms)和蓝牙模块的buff (打印时是最多100byte,100打印的)限制,就算蓝牙模块每包都告诉你接收成功,也是没透传完就又接收了。后来通过调试每次发20K数据,最后是 Android 发是 20字节/130ms 稳定。给Android 发是 20字节/ 8ms 。 (天杀的20字节,网上都是说20字节最多了) 后来看了国外一家物联网公司总结的 Ble 吞吐量的文章(上面有连接),知道Android 每个延时是可以连续接收6个包的。就改为 120字节/ 16ms (为啥是16ms,不是每次间隔要6个包吗,怎么像间隔两次,这时因为波特率影响,多了5个包100字节,差不多 我们的单片机透传到蓝牙模块要多耗时不到10ms ) 而Android 发数据可以申请 我们设备的mtu 来得到最多每次能发多少字节。延时还是130ms,即:241字节/ 130ms 提高12倍,这个速度还可以。 根据蓝牙BLE协议, 物理层physical layer的传输速率是1Mbps,相当于每秒125K字节。事实上,其只是基准传输速率,协议规定BLE不能连续不断地传输数据包,否则就不能称为低功耗蓝牙了。连续传输自然会带来高功耗。所以,蓝牙的最高传输速率并不由物理层的工作频率决定的。 在实际的操作过程中,如果主机连线不断地发送数据包,要么丢包严重要么连接出现异常而断开。 在BLE里面,传输速度受其连接参数所影响。连接参数定义如下: 1)连接间隔。蓝牙基带是跳频工作的,主机和从机会商定多长时间进行跳频连接,连接上才能进行数据传输。这个连接和广播状态和连接状态的连接不是一样的意思。主机在从机广播时进行连接是应用层的主动软件行为。而跳频过程中的连接是蓝牙基带协议的规定,完全由硬件控制,对应用层透明。明显,如果这个连接间隔时间越短,那么传输的速度就增大。连接上传完数据后,蓝牙基带即进入休眠状态,保证低功耗。其是1.25毫秒一个单位。 2)连接延迟。其是为了低功耗考虑,允许从机在跳频过程中不理会主机的跳频指令,继续睡眠一段时间。而主机不能因为从机睡眠而认为其断开连接了。其是1.25毫秒一个单位。明显,这个数值越小,传输速度也高。 蓝牙BLE协议规定连接参数最小是5,即7.25毫秒;而Android手机规定连接参数最小是8,即10毫秒。iOS规定是16,即20毫秒。 连接参数完全由主机决定,但从机可以发出更新参数申请,主机可以接受也可以拒绝。android手机一部接受,而ios比较严格,拒绝的概率比较高。 参考: 在iOS和Android上最大化BLE吞吐量 最大化BLE吞吐量第2部分:使用更大的ATT MTU2023-07-23 22:15:551
以ble为后缀的单词10个
以ble为后缀的单词: Eatable 可以吃的; Suitable 合适的; Bearable 可忍受的; Saleable 适于销售的; Washable 可洗的,耐洗的; Loveable 可爱的,惹人爱的; Debatable 可争辩的; Breakable 易碎的; Drinkable 可饮用的; Probable 可能的 扩展资料 It is probable that the medication will suppress the symptom without treating the condition 这种药物有可能治标不治本。 The probable cause of his death is traceable to an incident in 1724 他的.死亡很可能是由1724年的一起事件造成的。 Mechanism Analysis and Parameter Design of Rolling Seal Mechanism for Twisting Breakable Cover 扭断盖滚压封口机的机构分析与参数设计 Stuff that breakable, and old like China. 易碎和古老的东西,比如瓷器。 Well, I just mean they"re easily breakable. 我是说纸箱容易破裂。2023-07-23 22:16:021
ble勿连什么意思
ble勿连的意思是蓝牙低能耗。低功耗蓝牙是蓝牙技术联盟设计和销售的一种个人局域网技术。旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。相较经典蓝牙,低功耗蓝牙旨在保持同等通信范围的同时显著降低功耗和成本。蓝牙低功耗技术主要应用于特别是智能家庭、健康、运动健身部分。2023-07-23 22:16:091
低功耗蓝牙Ble的详细使用流程
中心设备 :判断蓝牙是否可用->打开蓝牙->开始扫描->获取被扫描到的设备->连接设备->发现服务->获取到指定特征->写入特征值 外围设备 :判断蓝牙是否可用->打开蓝牙->创建广播数据->发送广播->添加服务至广播->根据监听获取写入的数据 下图是中心设备的使用流程图 来源 不是任何设备都支持BLE,最开始要确定设备是否支持,还要确定蓝牙已经打开。 02 01 06 是一个AD Structure:Data的长度是02;Data是01 06;AD Type是01(Flags);AD Data是06,表明支持General Discoverable Mode、不支持BR/EDR。 03 03 aa fe 是一个AD Structure:Data的长度是03;Data是03 aa fe;AD Type是03(16 bits的Service UUID);AD Data是aa fe,是Eddystone profile的Service UUID。 AD Type查询2023-07-23 22:16:171
在物联网大趋势下,低功耗蓝牙BLE技术有哪些优势
1、BLE蓝牙模块功耗更低、供电时间长因为低功耗蓝牙技术已经发展到日常平均功耗可以做到10mA以下了,如此低功耗蓝牙应用在智能产品中,用体积很小的电池供电就能坚持工作一两年甚至更久,相对其它无线技术和经典蓝牙的功耗,这正是智能产品愿意且中意的通信技术。E104-BT53低功耗蓝牙模块2、低功耗蓝牙模块连接速度快低功耗蓝牙技术采用非常快速的连接方式,连接时间间隔可变,这个间隔根据具体应用可以设置为几毫秒到几秒不等,几乎瞬间就能与智能手机相连,极大缩短等待的时间。3、低功耗蓝牙模块使用免执照频段因为低功耗蓝牙技术是一种免费的电磁频段,低功耗蓝牙运行的2.4GHz的频段,正是完全免费的一个电磁频段,其它例如WiFi、电磁炉等都是使用的2.4GHz的频段,就是因为这个频段不用向无线电管理部门交专门的授权费用。2023-07-23 22:16:373
ble是物理的什么公式
如果是Blv,感应电动势:E=Blv2023-07-23 22:16:572
ble是否需要配对
当然需要呀2023-07-23 22:17:042
BLE(低功耗蓝牙)的MTU是什么,最大多少字节?
MTU: 最大传输单元(MAXIMUM TRANSMISSION UNIT) , 指在一个PDU (Protocol Data Unit: 协议数据单元,在一个传输单元中的有效传输数据)能够传输的最大数据量(多少字节可以一次性传输到对方)MTU 交换是为了在主从双方设置一个PDU中最大能够交换的数据量,通过MTU的交换和双方确认(注意这个MTU是不可以协商的,只是通知对方,双方在知道对方的极限后会选择一个较小的值作为以后的MTU,比如说,主设备发出一个150个字节的MTU请求,但是从设备回应MTU是23字节,那么今后双方要以较小的值23字节作为以后的MTU),主从双方约定每次在做数据传输时不超过这个最大数据单元,MTU交换通常发生在主从双方建立连接关系后。2023-07-23 22:17:143
ble管理器有什么用
ble管理器是蓝牙4.0所进行打造的一款串口调试工具,满足软件或者手机开发工程师在手机上面进行蓝牙串口调试的需求,支持多种功能和字符上面的传输,应该能够满足开发人员在串口调试上面几乎所有的需求,对于开发人员来说这是一款极为好的软件。2023-07-23 22:17:401
ble是什么牌子的空调
百灵。BLE百灵12年专注商用车空调研发与生产,可根据个性需求提供产品定制服务,品类包括商用车空调,驻车空调,农用车空调,农机空调,拖拉机空调,工程车空调,卡车空调。2023-07-23 22:17:471
安卓蓝牙中的characteristic是怎样区分的
BLE分为三部分Service、Characteristic、Descriptor,这三部分都由UUID作为唯一标示符。一个蓝牙4.0的终端可以包含多个Service,一个Service可以包含多个Characteristic,一个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value。一般来说,Characteristic是手机与BLE终端交换数据的关键,Characteristic有较多的跟权限相关的字段,例如PERMISSION和PROPERTY,而其中最常用的是PROPERTY,本文所用的BLE蓝牙模块竟然没有标准的Characteristic的PERMISSION。Characteristic的PROPERTY可以通过位运算符组合来设置读写属性,例如READ|WRITE、READ|WRITE_NO_RESPONSE|NOTIFY,因此读取PROPERTY后要分解成所用的组合(本文代码已含此分解方法)。2023-07-23 22:17:571
Android BLE 回调onCharacteristicWrite 时 返回的status 偶尔是失败 是什么原因呢?
很明显,最佳答案的解释是错误的。根据BLE协议,射频链路层的重发机制对于ATT层和GATT层都是黑盒。链路层的重试机制一定会保证数据包以发送的顺序在对端被接收,如果数据发送失败则会无限次重试,直到发送成功或连接超时才会停止。不管是没有接收到射频信号或接收到了数据但CRC校验错误都算失败,区别是没有接收到射频信号会累加连接超时的计数器。也就是说链路层的数据只存在发送成功(可能经过重发N次后成功),或者连接断开,不存在失败的可能性,也就无所谓返回状态的区别。onCharacteristicWrite返回的status状态看一下API就知道了,都是GATT开头的各种常量,也就是说从设备一定是接收到了数据,但是数据从链路层转发到GATT层的过程中可能存在各种异常情况,导致返回错误。需要注意的是应用层无法决定这个返回状态,比如说如果从设备的应用层接收到数据后发现不符合自己定义的接口数据协议规范,那么也只能通过另外发起notify来通知主设备,而无法通过status来返回错误类型。也就是说,status的真正意义是告诉主设备,写入的信息是否已经被从设备的应用层接收到,仅此而已,这里失败的话是需要进行重发的,但失败的原因不是所谓的链路层丢包。附带提一下,writeCharacteristic的返回值代表Android的app是否把数据成功送达到手机的蓝牙芯片的数据缓冲区中,由于手机端蓝牙数据流控机制的存在,这里返回true也很可能是命令还在流控队列中排队,而不是真正的通过手机蓝牙射频信号发射出去,所以这个返回值几乎不可能是false,也没什么意义,实际上iOS系统下的对等函数就没有这个返回值。附带一下status的错误码,其实API里就能看到的。GATT_ILLEGAL_PARAMETER 0x0087 (135)GATT_NO_RESOURCES 0x0080 (128)GATT_INTERNAL_ERROR 0x0081 (129)GATT_WRONG_STATE 0x0082 (130)GATT_DB_FULL 0x0083 (131)GATT_BUSY 0x0084 (132)GATT_ERROR 0x0085 (133)GATT_CMD_STARTED 0x0086 (134)GATT_PENDING 0x0088 (136)GATT_AUTH_FAIL 0x0089 (137)GATT_MORE 0x008a (138)GATT_INVALID_CFG 0x008b (139)GATT_SERVICE_STARTED 0x008c (140)GATT_ENCRYPED_MITM GATT_SUCCESSGATT_ENCRYPED_NO_MITM 0x008d (141)GATT_NOT_ENCRYPTED 0x008e (142)2023-07-23 22:18:061
5个ble为后缀的单词
ble为后缀的单词有: conceivable adj. 想像得出的,可信的; conformable a. 适合的,一致的,调和的; considerable a.相当大的;重要的; constable n. 治安官,警官,巡官; contemptible adj. 令人轻视的 扩展资料 It is conceivable that I"ll see her tomorrow. 我可能明天会见到她。 Without their support the project would not have been conceivable 如果没有他们的支持,这个项目根本就不可想象。 It is just conceivable that a single survivor might be found 或许能找到一个幸存者,这不是没有可能。 Through the centuries, flowers have been used for cooking in every conceivable way. 几个世纪以来,人们以各种想象得到的`方式将鲜花入菜。 Britain must still keep the nuclear and conventional capacity to deal with all conceivable threats. 英国仍须保持核武器和常规武器的生产能力,以应对各种潜在威胁。2023-07-23 22:18:131
什么是蓝牙低功耗(BLE)功能?
蓝牙低功耗(或蓝牙BLE,蓝牙智能或蓝牙4.0+)是为物联网(IoT)设备构建的功能和应用程序专门设计的蓝牙版本,蓝牙BLE允许短时间的远程无线电连接,延长电池寿命。更快的连接在蓝牙中,低能耗技术设备针对扫描设备的连接进行了优化。设备可以在3 ms内连接,发送和确认数据。待机时间更短蓝牙低功耗技术仅使用3个渠道,射频(RF)开启1.2 ms而不是22.5 ms,空闲电流主要由深度睡眠电流决定,由于低占空比,RF电流可忽略不计。多工作模式:扫描者、广播者一台设备可以同时进行扫描和广播。并且可以与中央或外围设备连接,并且可以同时进行广播。对比传统蓝牙,BLE蓝牙的局限性BLE蓝牙的数据吞吐量:理论上限为1 Mbps。在实践中,典型情况假设每秒5-10 Kb。但即使以这些相对适中的数据速率进行传输,10 KB / s也会迅速耗尽任何小型纽扣电池。这意味着,例如,BLE不应该用于传输媒体数据。BLE蓝牙的工作范围:典型的工作范围在2到5米之间,有意识地努力缩小范围并节省电池寿命。使用BLE设备的最佳方式是发送短消息。所以,BLE蓝牙更适用于物联网市场中不需要交换大量数据的应用程序。比如蓝牙信标,家庭自动化,楼宇自动化,智能照明和其他智能城市应用的数据传输应用。2023-07-23 22:18:341
蓝牙ble是什么
BLE前身是NOKIA开发的Wibree技术,主要用于实现移动智能终端与周边配件之间的持续连接,是功耗极低的短距离无线通信技术,并且有效传输距离被提升到了100米以上,同时只需要一颗纽扣电池就可以工作数年之久,以上诸多技术优势使得BLE的发展前景相当可观。2023-07-23 22:18:502
蓝牙BLE与传统蓝牙区别
天工测控:2023-07-23 22:18:593
BLE和传统蓝牙有什么区别,各有什么优缺点
以上图说明了传统蓝牙跟ble的区别2023-07-23 22:20:034
蓝莓ble是啥
蓝莓BLE是一种使用低功耗蓝牙技术的蓝莓设备。BLE是BluetoothLowEnergy的缩写,蓝牙低功耗技术的应用让蓝莓设备更加耐用、高效和便携。2023-07-23 22:20:481
ble后缀的单词及意思
ble后缀的单词有: agreeable a.惬意的;同意的; applicable a.能应用的;适当的; appreciable a.可估价的;可察觉的; approachable adj. 可接近的,随和的; arable adj. 可耕的,适合种植的 扩展资料 abominable adj. 可厌的,天气极坏的; acceptable a.可接受的,合意的; accessible adj. 易达到的,易受影响的; accountable a. 有责任的,可说明的,可解释的; adaptable adj. 有适应能力的,能运用的`;适应性强的;可改编的; adjustable adj. 可调整的;可校准的; admirable a. 可钦佩的,优良的,令人惊奇的; admissible 允许的,可采纳的; adorable adj. 迷人的,可爱的; advisable n.明智的;可取的。2023-07-23 22:20:551
ble遥控器工作原理
蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。 蓝牙低能耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此平时可以处于“非连接”状态(节省能源),此时链路两端相互间只是知晓对方,只有在必要时才开启链路,然后在尽可能短的时间内关闭链路。 BLE技术的工作模式非常适合用于从微型无线传感器(每半秒交换一次数据)或使用完全异步通信的遥控器等其它外设传送数据。这些设备发送的数据量非常少(通常几个字节),而且发送次数也很少(例如每秒几次到每分钟一次,甚至更少)。 超低功耗无线技术 蓝牙低能耗技术的三大特性成就了ULP性能,这三大特性分别是最大化的待机时间、快速连接和低峰值的发送/接收功耗。 无线“开启”的时间只要不是很短就会令电池寿命急剧降低,因此任何必需的发送或接收任务需要很快完成。被蓝牙低能耗技术用来最小化无线开启时间的第一个技巧是仅用3个“广告”信道搜索其它设备,或向寻求建立连接的设备宣告自身存在。相比之下,标准蓝牙技术使用了32个信道。 这意味着蓝牙低能耗技术扫描其它设备只需“开启”0.6至1.2ms时间,而标准蓝牙技术需要22.5ms时间来扫描它的32个信道。结果蓝牙低能耗技术定位其它无线设备所需的功耗要比标准蓝牙技术低10至20倍。 值得注意的是,使用3个广告信道是某种程度上的妥协:这是在频谱非常拥挤的部分对“开启”时间(对应于功耗)和鲁棒性的一种折衷(广告信道越少,另外一个无线设备在选用频率上广播的机会就越多,就越容易造成信号冲突)。不过该规范的设计师对于平衡这种妥协相当有信心——比如,他们选择的广告信道不会与Wi-Fi默认信道发生冲突2023-07-23 22:21:151
ble后缀的单词10个
ble后缀的单词: table n. 桌子;表格;平地层; marble n. 大理石;大理石制品;弹珠; treble adj. 三倍的;最高声部的;三层的;三重的; changeable adj. 无常的;可改变的;易变的;不定的; reliable adj. 可靠的;可信赖的,等。 扩展资料 possible adj. 可能的;合理的;合适的 capable adj. 有能力的.;有才干的;容许……的;可以做(某事)的;综合性的;有资格的; audible adj. 听得见的; breakable adj. 易碎的; drinkable adj. 可饮用的;可以喝的,等。2023-07-23 22:21:221
ARM汇编中BLE指令是什么意思?
此处的 BLE是 指 Branch if Less than or Equal, 即小于或等于 跳转; BEQ 才是相等跳转,Branch if EQual, BLEQ 也是相等跳转,不过是 带链接的等于跳转(Branch with Link if EQual), 被采纳的回答显然是弄混了 带链接的相对跳转指令: BL ,Branch with Link2023-07-23 22:21:292
BLE和传统蓝牙有什么区别,各有什么优缺点
蓝牙BT和BLE的区别经典蓝牙模块(BT):泛指支持蓝牙协议在4.0以下的模块,一般用于数据量比较大的传输。经典蓝牙模块可再细分为:传统蓝牙模块和高速蓝牙模块。传统蓝牙模块在2004年推出,主要代表是支持蓝牙2.1协议的模块,在智能手机爆发的时期得到广泛支持。高速蓝牙模块在2009年推出,速率提高到约24Mbps,是传统蓝牙模块的八倍。低功耗蓝牙模块(BLE):蓝牙低功耗技术采用可变连接时间间隔,这个间隔根据具体应用可以设置为几毫秒到几秒不等。另外,因为BLE技术采用非常快速的连接方式,因此可以处于“非连接”状态(节省能源),此时链路两端相互间仅能知晓对方,必要时可以才开启链路,然后在尽可能短的时间内关闭链路。蓝牙BT/BLE只是蓝牙模块的一种分类方法,其实蓝牙模块还有很多分类。举个例子:按照用用途来分,数据蓝牙模块语音蓝牙模块串口蓝牙模块车载蓝牙模块;按照芯片设计来分,flash版本ROM版本。前者一般是BGA封装(求栅阵列封装),外置flash的,后者一般是LCC封装(表面贴装型封装),外接EEPROM。2023-07-23 22:21:451
蓝牙低能耗的BLE的两种芯片架构
蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。蓝牙单模器件是蓝牙规范中新出现的一种只支持蓝牙低能耗技术的芯片——是专门针对ULP操作优化的技术的一部分。蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。双模芯片可以在使用标准蓝牙芯片的任何场合使用。这样安装有双模芯片的手机、PC、个人导航设备(PND)或其它应用就可以和市场上已经在用的所有传统标准蓝牙设备以及所有未来的蓝牙低能耗设备通信。然而,由于这些设备要求执行标准蓝牙和蓝牙低能耗任务,因此双模芯片针对ULP操作的优化程度没有像单模芯片那么高。单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。相反,标准蓝牙技术(和蓝牙低能耗双模器件)通常要求使用至少两节AAA电池(电量是钮扣电池的10至12倍,可以容忍高得多的峰值电流),并且更多情况下最多只能工作几天或几周的时间(取决于具体应用)。注意,也有一些高度专业化的标准蓝牙设备,它们可以使用容量比AAA电池低的电池工作。2023-07-23 22:22:142
ble调试宝怎么用
下载安装之后,记得先打开手机蓝牙。进入软件主界面,会自动搜索可用设备。选择其中一个点击右边的连接按钮。连接成功之后可以进行调试。2023-07-23 22:22:321
如何使用BLE蓝牙模块
BLE蓝牙模块是极为常用的一种无线通信模块,其广泛应用于各种各类智能设备,主要应用包括:定位标签,资产跟踪,运动及健身传感器,医疗传感器,智能手表,遥控器,玩具等。SKYLAB的BLE蓝牙模块主要是基于Nordic nRF51822芯片制作的蓝牙模块SKB360、SKB360I、SKB361、SKB362和基于Nordic nRF52832芯片制作的SKB369等低功耗蓝牙模块。可应用于互动娱乐设备:遥控、3D眼镜、游戏控制器;个人区域网络:健康/健身传感器和监护仪、医疗设备、钥匙扣+手表;遥控玩具;蓝牙信标;蓝牙网关;室内定位;Mesh灯控。BLE蓝牙模块应用领域1.蓝牙灯控方案蓝牙灯控解决方案主要以SKYLAB BLE蓝牙模块SKB362为基础,实现智能蓝牙LED灯的色彩控制等功能。SKYLAB将提供:1)产品级解决方案(如蓝牙彩控灯,空调伴侣等);2)硬件设计支持;3)软件设计支持;4)APP设计(包括iOS和Android,第三方合作);5)云端平台支持(第三方合作)。蓝牙灯控方案说明:手机蓝牙和彩灯上的蓝牙模块进行配对,实现APP命令控制彩灯蓝牙,实现不同的功能,比如可以通过色板、声音调节喜欢的颜色、亮度等。2.BLE蓝牙智能锁方案智能门禁锁是在原有门禁系统的基础上,增加低功耗蓝牙透传模块,实现手机蓝牙协议对接。智能手机通过APP调用蓝牙服务,发送指令,智能门禁锁接收蓝牙指令,继而控制智能门禁锁的开关。蓝牙智能锁方案说明:智能锁中内置BLE蓝牙模块SKB369,手机通过APP读取智能锁蓝牙信息,尝试配对,并发送开锁请求到服务器端,服务器端向手机发送开锁指令,手机接受到指令,通过蓝牙再把指令发送给智能锁进行解锁。3.蓝牙MAC地址扫描打印解决方案SKYLAB蓝牙MAC地址扫描打印解决方案是包含蓝牙MAC地址读取设备、MAC地址读取软件、MAC地址管理软件、二维码生成软件、二维码打印驱动的一整套解决方案。蓝牙MAC地址扫描打印解决方案说明:把低功耗蓝牙模块(比如SKYLAB的BLE蓝牙4.2模块SKB360)充当主机角色,扫描周边设备,根据广播名称过滤,筛选出周边信号最强的设备,获取MAC地址;获取MAC地址后,通过串口将数据发送给标签打印机,标签打印机打印出符合要求的二维码。以二维码的形式将蓝牙MAC地址打印出来,方便蓝牙产品对蓝牙MAC地址进行读取,能够有效提高工作效率。4.蓝牙Mesh组网方案蓝牙Mesh网络是用于建立多对多(many:many)设备通信的低能耗蓝牙(Bluetooth Low Energy,也称为Bluetooth LE)新的网络拓扑。它允许您创建基于多个设备的大型网络,网络可以包含数十台,数百甚至数千台蓝牙Mesh设备,这些设备之间可以相互进行信息的传递,无疑这样一种应用形态为楼宇自动化,无线传感器网络,资产跟踪和其他解决方案提供了理想的选择。有了蓝牙Mesh,智能家居便涌现出很多新的应用可能性。蓝牙Mesh组网方案说明:蓝牙Mesh组网的BLE蓝牙模块——SKB369。有了蓝牙Mesh之后,只需用一台控制设备,就可以同时、轻松、高效地控制智能家居系统内的所有功能。蓝牙Mesh的强大架构还可以进行扩展,满足办公室、工厂、工业环境甚至城市的需求,将数以百万计的节点连接起来,而不会产生故障。5.蓝牙Beacon室内定位方案Beacon是建立在低功耗蓝牙协议基础上的一种广播协议,同时它也是拥有这个协议的一款低功耗蓝牙从机设备。Beacon设备,通常放在室内的某个固定位置,每隔一定时间广播一个数据包到周围,作为独立的蓝牙主机在扫描时,会间隔地接收到 Beacon广播出来的数据包,可以用在超市商品促销,用来向走进它的顾客推送促销信息或者优惠券等,或者通过当前接收发送信号强度指示值(RSSI)、和MAC地址解析等来进行复杂的数据运算,进而对顾客进行室内定位。蓝牙Beacon室内定位方案说明:室内定位配合Beacon这一技术,将Beacon节点布在适当的位置,在配合丰富的APP应用,可以很方便地为用户提供室内位置服务。2023-07-23 22:22:411
iOS 蓝牙通信技术(EAP和BLE)
iOS连接外设的几种方式,无疑就下面几种方式:GameKit、CoreBluetooth和ExternalAccessory,GameKit早已废弃。那就剩下CoreBluetooth和ExternalAccessary两个框架,有图可知,EAP要MFi认证,要求设备的设计理念符合苹果的要求,据说通过率是2%。大部分公司都是放弃的,所以绝大部分公司采取的是BLE这套框架,但是门槛高有他的好处,这套框架很强大,不仅可以进行无线蓝牙通信,还可以进行有线通信,就是通过USB通信。 BLE通信方式很简单就不做说明,说一下BLE通信过程中大家忽视的东西,希望对大家有帮助。 很多做过蓝牙的人都很确定BLE通信中iOS拿不到设备的MAC地址,那我就验证给大家看能不能拿到! 在BLE协议中 - (void)centralManager:(CBCentralManager*)central didDiscoverPeripheral:(CBPeripheral*)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber*)RSSI; 可以同过advertisementData广告包中获取这几个属性值 画红线处就是MAC地址,只是要处理一下,我用安卓手机测试,得到的MAC地址是E0:DA:AA:AB:5D:E7, 第二中获取MAC地址的方式是链接之后才能获取,在特种纸Read里面可以读取到,也是要经过处理。 综上,iOS是可以得到MAC地址的,希望能为大家扫除得不到MAC地址的这个误区。2023-07-23 22:23:281
第四课预习BLE网络特点有哪些?
有以下特点:第一点就是,ble采用了多种纠错功能,数据重传功能,使得蓝牙通讯具有高可靠性。第二点是成本低,功耗低。市面上比较常用的蓝牙芯片,也就几块钱到十几块钱。一颗纽扣电池,可以使用很久。第三点就是,蓝牙BLE连接启动的速度非常快。2到3个毫秒就可以连接完成,基本上是瞬间完成的。2023-07-23 22:23:351
蓝牙4.0,蓝牙BLE模块,蓝牙4.0和蓝牙BLE的区别
一、关于蓝牙4.0蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙Classic Bluetooth)和低功耗蓝牙部分(Bluetooth Low Energy)。这两个部分适用于不同的应用或者应用条件。传统蓝牙是在之前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,低功耗蓝牙是Nokia的Wibree标准上发展起来的。传统蓝牙可以用与数据量比较大的传输,如语音,音乐,较高数据量传输等,低功耗蓝牙这样应用于实时性要求比较高,但是数据速率比较低的产品,如遥控类的,如鼠标,键盘,遥控鼠标(Air Mouse),传感设备的数据发送,如心跳带,血压计,温度传感器等。传统蓝牙有3个功率级别,Class1,Class2,Class3,分别支持100m,10m,1m的传输距离,而低功耗蓝牙无功率级别,一般发送功率在7dBm,一般在空旷距离,达到20m应该是没有问题的。所以蓝牙4.0是集成了传统蓝牙和低功耗蓝牙两个标准的,并不只是低功耗蓝牙。蓝牙4.0是蓝牙3.0+HS规范的补充,专门面向对成本和功耗都有较高要求的无线方案,较3.0版本更省电、低成本和跨厂商互操作性、3毫秒低延迟、超长有效连接距离、AES-128加密等;蓝牙4.0可广泛用于卫生保健、体育健身、家庭娱乐、安全保障等诸多领域。通常用在蓝牙耳机、蓝牙音箱、计步器、心律监视器、智能仪表、传感器物联网等设备上,大大扩展蓝牙技术的应用范围。该技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。蓝牙4.0支持两种部署方式:双模式和单模式。双模式中低功耗蓝牙功能集成在现有的经典蓝牙控制器中,或再在现有经典蓝牙技术(2.1+EDR/3.0+HS)芯片上增加低功耗堆栈,整体架构基本不变,因此成本增加有限。单模式面向高度集成、紧凑的设备,使用一个轻量级连接层(Link Layer)提供超低功耗的待机模式操作、简单设备恢复和可靠的点对多点数据传输,还能让联网传感器在蓝牙传输中安排好低功耗蓝牙流量的次序,同时还有高级节能和安全加密连接。超低的峰值、平均和待机模式功耗。u2665速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个。所有连接都使用蓝牙2.1加入的减速呼吸模式(sniff subrating)来达到超低工作循环。u2665跳频:使用所有蓝牙规范版本通用的自适应跳频,最大程度地减少和其他2.4GHz ISM频段无线技术的串扰。u2665主控制:更加智能,可以休眠更长时间,只在需要执行动作的时候才唤醒。u2665延迟:最短可在3毫秒内完成连接设置并开始传输数据。u2665范围:提高调制指数,最大范围可超过100米(根据不同应用领域, 距离不同)。u2665健壮性:所有数据包都使用24-bitCRC校验,确保最大程度抵御干扰。u2665安全:使用AES-128 CCM加密算法进行数据包加密和认证。u2665拓扑:每个数据包的每次接收都使用32位寻址,理论上可连接数十亿设备;针对一对一连接优化,并支持星形拓扑的一对多连接;使用快速连接和断开,数据可以再网状拓扑内转移而无需维持复杂的网状网络。二、关于蓝牙BLEBLE是蓝牙低能耗的简称(Bluetooh Low Energy)。蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHz ISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。双模芯片可以在目前使用标准蓝牙芯片的任何场合使用。这样安装有双模芯片的手机、PC、个人导航设备(PND)或其它应用就可以和市场上已经在用的所有传统标准蓝牙设备以及所有未来的蓝牙低能耗设备通信。然而,由于这些设备要求执行标准蓝牙和蓝牙低能耗任务,因此双模芯片针对ULP操作的优化程度没有像单模芯片那么高。单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。相反,标准蓝牙技术(和蓝牙低能耗双模器件)通常要求使用至少两节AAA电池(电量是钮扣电池的10至12倍,可以容忍高得多的峰值电流),并且更多情况下最多只能工作几天或几周的时间(取决于具体应用)。注意,也有一些高度专业化的标准蓝牙设备,它们可以使用容量比AAA电池低的电池工作。SKYLAB生产的蓝牙4.0模块就是低功耗的,而且是采用的nRF51822单模芯片,有兴趣可以去了解下!2023-07-23 22:23:431
BLE 链路层报文详解
报文是构成链路层的基石。报文就是携带着标签的数据,有一个设备发送,其他设备接收。 前导序列是一个01010101或者10101010的8bit交替序列。如果接入地址的第一位是0,前导序列则是01010101,否则是10101010,这样的设计是为了保证报文的前9位都是交替的。 这个前导序列的作用主要是为了做 数据接收的训练,比如频率同步,符号时间评估,AGC训练。通过这段数据的训练使得接收器调整到合适的状态对接下来的数据进行接收。 接入地址是一个32位的地址,包含两种类型: 考虑到无线通信存在的噪音干扰和其他链路的干扰,就涉及了接入地址用来排除噪音和其他干扰数据包。 例如广播介入地址是一个固定值10001110100010011011111011010110b (0x8E89BED6) ,当接受到广播后验证接入地址正确后才认为他是个广播报文而不是噪音。 而对于数据报文的介入地址则是随机地址,不同的连接有不同的值,这是为了进行专线交流用的。 从BLE空口包中的Link Layer 可以看到每个报文都有一个Access Address,Adv_pkt有一个固定Access Address,而intiator发con_req时会包含一个Con_Access_Addr,连接之后的data pkt都是用的这个新的Access Addr了; 每次重新断开建立连接,Access Address会不一样,都会重新随机生成。 如下图,广播包使用固定的0x8E89BED6 如下图,连接请求包使用协商通知新的地址,此处为0x5b71c59b 其实关于Access Address是还有一些要求的,如不能有连续的6个1 bit位或6个连续的0 bit位,因此这样算下来,满足作为Access Address的4byte的组合中有231个是可用的 报头虽然只有8bit,但是包含了不少的信息,而且他的内容因是广播报文还是数据报文差异很大。我们将依次来分析他们的结构和内容。 广播报文类型包括7种: 其中根据其作用域,还可以将他们分为三类,ADV_* 属于广播数据单元, SCAN_* 属于扫描数据单元,CONNECT_* 属于发起数据单元。 发送地址类型和接收地址类型都是BLE地址类型,只有两种,公有地址和随机地址,因而用一个bit就可以进行区分。公有地址是需要向IEEE申请和购买的类似于公网ip,但是随机地址则不需要。 逻辑链路标识符,主要是用来判断数据报文的类型: 以一个L2CAP数据包为例,可以分为以下结构: 这样带来两种后果:第一是链路层并不知道一个上层数据包究竟有多少个链路层报文组成,连续的数量不确定;第二是总是可以发送长度为零的延续包,这些长度为零的空包可以用来进行消息的确认。 ** 序列号SN **建立连接后的第一个数据包序号为零;每次发送新的数据包时,其序列号与上一个数据包的序列号不同; 也就是说,如果序列号与上一个数据包的序列号相同则为重传报文,如果不同则是新的报文。 ** 期待序列号NESN **期待序列号,就是告诉对方自己期待的序列号。这其实起到一个数据包确认的作用,如果确认数据包的期待序列号和发送的序列号相同,则说明对方期待我们重传刚刚的数据包,如果是不同的,则是希望我们发送新的数据报文。 ** 更多数据 **更多数据位是用来告之对方,我方是否还有下一个数据包要发送,如果该位设置为1,则表明仍有数据要传送,对方则选择保持连接;设为0,则表明没有更多数据要进行发送,对方则会断开连接,节省能量。 一图以概之 长度这个数据段很简单,表示数据段的实际数据的长度。 对于广播报文,该段是由6个bit组成,剩余两个bit留作未来使用; 对于数据报文,该段是由5个bit成,剩余三个bit留作未来使用; 他们长度需要bit不相同的原因是,广播数据报文多了6个字节的设备地址需要携带,因为需要6bit来标识长度; 最大传输的数据是31个字节,但是如果数据被加密,需要留出4个自己进行数据完整性校验 24bit的循环校验码,可以校验所有基数位以及所有2,4位错误,显然其并不能校验所有位错误,但是出于低功耗考虑,这是一个妥协的产物。2023-07-23 22:23:501
BLE:主动扫描 vs. 被动扫描
BLE (Bluetooth Low Energy) 设备可以通过扫描发现周围的其他 BLE 设备。当 BLE 设备执行扫描时便处在 scanning state。该状态是 BLE 设备在 LL (Link Layer) 的状态之一。它与其他几种 LL 状态构成了如下状态机: 处于 scanning state 的 BLE 设备被称为 scanner。对应的,当 BLE 设备想让其他设备发现自己时会处在 advertising state。此时 BLE 设备被称为 advertiser。 BLE 设备主要可执行两种扫描 active scanning 和 passive scanning(更复杂的扫描情况可参考 ref 2)。具体使用何种扫描方式由 HCI_LE_Set_Scan_Parameters command 控制。该命令中有一个 LE_Scan_Type 参数,当设为 0x00 时执行 passive scanning: 当设为 0x01 时执行 active scanning: 其他的值目前均被保留。 HCI_LE_Set_Scan_Parameters command 只是配置了扫描的参数,要真正开始扫描还需要发送 HCI_LE_Set_Scan_Enable command: Passive scanning 的数据流如下[3]: Active scanning 的数据流如下[4]: 对于 passive scanning,它仅在 LL 上安静地接收空中飘过的各种 advertising PDUs,绝不会主动发送其他数据。因此 passive scanning 很隐蔽,不会暴露 scanner 的任何信息。 对于 active scanning,它除了像 passive scanning 一样接收空中的 advertising PDUs,还会主动向 advertiser 发送 SCAN_REQ PDU,然后接收 advertiser 响应的 SCAN_RSP PDU,从而获取 advertiser 更多的信息: 不过 SCAN_REQ PDU 会携带 scanner 的 address,即上图中的 ScanA 字段。这可能会暴露 scanner 的身份。因此在执行 active scanning 时,我们最好使用 spooftooph 伪造自己的 BD_ADDR,防止真实 BD_ADDR 被暴露。 不论是 active scanning 还是 passive scanning,扫描的结果均以 HCI_LE_Advertising_Report event 的形式返回给 host。该 event 携带的 Event_Type parameter 有如下 5 种取值[5],说明了扫描结果来自于哪一种 advertising PDU: 对于返回的结果,passive scanning 与 active scanning 的区别体现在 SCAN_RSP PDU 上。Active scanning 有能力返回 SCAN_RSP PDU,而 passive scanning 不可能返回 SCAN_RSP PDU。 具体扫描得到的数据存储在 Data 参数中。该参数也有协议定义的格式,简单的说它是一个 AD (Advertising Data) structure 数组。AD structure 的格式如下[6]: 其中 AD Type 的含义由 GAP (Generic Access Profile) 定义。 这里举两个例子。比如 passive scanning 返回的扫描结果如下: 再比如 Active scanning 因 SCAN_RSP PDU 返回扫描结果如下: 在情报收集阶段,我们很关心目标设备的名字。但是厂商给出设备名称的位置是不确定的。设备名称可能位于 advertising data 也可能位于 scan response data。因此有时使用 passive scanning 也能获取目标设备的名字。 另外,厂商不一定使用 GAP 定义的 AD Type 0x09 (Complete Local Name) 来存储设备的名字。因为 GAP 还定义了 AD Type 0xFF (Manufacturer Specific Data),厂商也可能把设备的名字放在其中并定义自己的解析规则。 因此在无法伪装 BD_ADDR 时,可以直接试试 passive scanning 能否解决问题。2023-07-23 22:23:571
该手机不支持ble是什么意思?
ble就是低功耗蓝牙,是蓝牙通讯的4.x版本,相对于之前的版本,更省电,连接速度更快。你说的手机不支持ble意思就是这个手机只支持传统的蓝牙,比如蓝牙2.1或3.0,但不支持ble。2023-07-23 22:24:041
BLE蓝牙ios简介(一)
随着蓝牙低功耗技术BLE(Bluetooth Low Energy)的发展,蓝牙技术正在一步步成熟,如今的大部分移动设备都配备有蓝牙4.0,相比之前的蓝牙技术耗电量大大降低。从iOS的发展史也不难看出苹果目前对蓝牙技术也是越来越关注,例如苹果于2013年9月发布的iOS7就配备了iBeacon技术,这项技术完全基于蓝牙传输。但是众所周知苹果的设备对于权限要求也是比较高的,因此在iOS中并不能像Android一样随意使用蓝牙进行文件传输(除非你已经越狱)。知道什么是蓝牙之后,那么在iOS中进行蓝牙传输应用开发常用的框架有哪几种呢? 1、GameKit的2023-07-23 22:24:111