- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我们正在开发与 iPad 配合使用的 BLE 传感器外围设备,它需要使用 TI CC2541 BLE 模块和自定义配置文件的以下 BLE 通知特性(无确认)数据吞吐量:
每 10 毫秒一个 20 字节(GATT 最大标准数据包),或者由于我们似乎限制每个连接间隔 4 个数据包,这相当于每 40 毫秒一个连接间隔。所需的吞吐量为每秒 2,000 字节,TI 网站建议将 CC2541 BLE 解决方案用于需要此级别数据吞吐量的多种传感器设备。
BLE 模块的配置文件设置了最小和最大连接间隔分别为 20 毫秒和 40 毫秒,这应该足够了。 《Apple Products 的蓝牙配件设计指南》文档建议我们设置的最小和最大连接间隔,如上是正确的。我们在新的 Mac Mini/Mac Book 上使用适用于 iOS 6 的最新 iPad 和 Apple 工具。
在 iPad 上使用一个简单的测试程序,我们可以让链接正常工作,以 20 毫秒的间隔向 BLE 外围设备发送 20 字节的数据包,但是一旦我们根据需要将其降低到 10 毫秒,我们就会开始丢失数据包或收到损坏的数据包,我们关闭了 FIFO 空中断,因此我们可以更快地处理向 BLE 模块 FIFO 的发送,并且我们使用最大波特率 230400 将 20 字节数据包从微 Controller 发送到 BLE TX FIFO。
我们意识到我们处于 BLE 传输限制的顶端,并且是可能的。谁能告诉我是否有解决方案可以使用 TI CC2541 BLE 芯片/模块和最新的 iPad 实现每秒 2000 字节的吞吐量?
最佳答案
我们将 TI 2540(BLE 堆栈版本 1.3.2)成功用于 iPad/iPod/iPhone(iOS 6.x 和 7.x)。我们目前发送 75 个 20 字节/秒的通知 => 1500 字节/秒。但我已尝试发送 125 条通知,效果也不错。
当然,您发送的越多,丢失数据的可能性就越大,例如,重新发送 NACK 消息的时间越短。
我经历过 iOS 的 BLE 堆栈可能会进入一种模式,它开始连续 NACK 消息。如果发生这种情况,您将丢失很多消息。我已经就此向 Apple 报告了一个错误。 (这个问题似乎已经在 iOS 7.1.beta3/4 中修复了。)
我目前有:
// Minimum connection interval (units of 1.25ms, 80=100ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MIN_CONN_INTERVAL 10
// Maximum connection interval (units of 1.25ms, 800=1000ms) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_MAX_CONN_INTERVAL 20
是的,它不符合 Apple 的指导方针。但我相信在我们的案例中他们可以放松。
更新:我也曾尝试使用 iDevice 作为外围设备,即两个 iDevice 之间的 BTLE。在这里,我每秒发送 150 条消息,没有任何问题。
关于ios - BLE外设吞吐量限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240978/
我是 Xcode 新手,我编写了一些代码来发现并连接到 BLE 模块 (Adafruit Bluefruit LE)。然而扫描时却什么也没发现。有什么帮助吗? 这是我的代码 import UIKit
我正在开发一个 Android 应用程序,该应用程序充当具有服务的蓝牙外围设备角色。 当我开始转换广告时,搜索提供此服务的设备的其他 Android 设备可以看到我的设备(并且无需 PIN 即可与之配
解释: 我正在使用核心蓝牙框架连接到 BTLE 外围设备,将外围设备标识符保存在数据库中。 同时,我将外围设备保存在一个数组中以处理与外围设备的重新连接。 但是,当用户手动退出应用程序时,我的数组变为
我对蓝牙通信还很陌生。我的第一个项目打算将数据从 iOS 设备传输到 BLEshield(小芯片)。 为了测试我的中央代码,我决定将 iPhone 设置为外围设备(一旦我拿到芯片,芯片将扮演的角色)并
我正在尝试创建一个充当低功耗蓝牙 (BLE) 外围设备的 Android 5 (lollipop) 应用程序。该应用程序在支持 BLE 外设模式的 Nexus 9 上运行。到目前为止,我已经设法为服务
我想在我的电脑上通过 USB 控制遥控模型。我不需要真正的 radio 控制,所以直接通过电缆控制 Helm 机就足够了(是的,模型和控制单元之间会有电缆)。我想我会构建一些基于微 Controlle
在升级到 iOS6 之前,一切正常,但现在当我运行时 [centralManager cancelPeripheralConnection:peripheral]; 回调被触发 -(void) cen
我需要使用 LPC1769 通过 SPI 将某些数据发送到 FPGA。但是我不太明白应该如何处理这个问题。我目前有这段代码,最终出现在硬故障处理程序中。我不被允许使用 CMSIS,所以我必须自己定义寄
我正在尝试使在不同设备上运行的两个程序通过 CoreBluetooth 进行蓝牙通信。我可以从管理器找到并连接外围设备,并且可以浏览连接的外围设备中的服务,但是当我尝试发现特征时,出现错误此操作不允许
我正在开发一个系统,该系统将 BLE 设备 (TI CC2540) 作为中央设备,将 iPhone4S 上的 iOS 应用程序作为外围设备。除了我需要的 1 个功能外,一切都很好:从中央端列入白名单(
BLE 在 7 Plus (iOS 14.4.2) 和 6 (iOS 12) 上运行良好。但是在 XR (14.4.2) 上,11 连接卡在 centralManager.connect(periph
我开发了一个 BLE 设备作为主设备,并连接到作为从设备的传感器。现在我想开发一个实时显示来 self 的设备(主设备)的数据的应用程序,因此该应用程序必须充当从设备(广告)。 Windows 8 A
我对这个问题失去了理智。 事实是,一个 android 设备正在通告一个字符串值:“78d89537-4309-4728-87f6-3ab2bbe231d8”(36 字节)。我使用的特征定义为 an
我正在运行以下代码: [peripheral maximumWriteValueLengthForType:CBCharacteristicWriteWithResponse]; 在我的例子中(iPh
有人可以建议在 BLE 通信中是否可以在建立连接之前从外围设备验证中央设备? 例子:1)周边广告不断2)Central发现Peripherial并发送连接请求3)连接建立,广告停止3) Periphe
所以我有一个简单的外设应用程序,我在我的三星 S8 手机上运行的 Android Studio 中编写代码。我可以很好地设置我所有的 BLE 广告和特性,但是当我添加我的服务时。从另一个中央设备(即具
如果我想将外围设备 (Arduino) 连接到中央设备 (Iphone),是否必须将 arduino 中的数据结构化为服务和特征?我见过一些项目,其中 iphone 连接到 arduino,但 iph
我正在 iOS 上开发一个 BLE 应用程序,在与 BLE 配件建立连接后,我将 CBPeripheral UUID 保存到 NSUSerDefaults。这样,如果稍后重新启动应用程序,并且 BLE
我想知道是否可以通过 coreBluetooth 将设备作为外围设备和 iBeacons 的范围来宣传服务,同时在后台完成这两项工作?本质上,目的是确定信标的范围,然后如果信标在.Near 或.Imm
是否可以在连接到中央设备时对广告进行外围扫描?看起来它要么正在扫描广告要么已连接您的外围设备,但我需要两者都做。外围设备应该能够报告它接收到的广告中的 RSSI 测量值。 我在 linux box (
我是一名优秀的程序员,十分优秀!