通过 BLE 传输大数据块的最佳方法

2023-12-08

我是 BLE 的新手,希望您能够指出我正确的实施方法。

我正在开发一个应用程序,其中外围(电池供电)设备不断聚合传感器读数。 在移动端应用程序上会有一个“同步”按钮,按下按钮后,我想将外围设备中积累的所有传感器读数传输到移动应用程序。 同步之间的最长持续时间可以是几天,因此,累积的数据可以达到 20Kbytes 的大小。

现在,我想知道执行从外围设备到中央应用程序的数据传输的最佳方法是什么。 我考虑过创建一系列特征,其中每个特征将包含固定数量的样本(例如代表 1 小时的读数)。

然后,同步后,我将:

  1. 读取特征计数(1 小时电池数量)。
  2. 然后一一读取特征(1小时电池)。

但是,我不知道这是否是一种有效的方法?

  1. 我不确定这是否是我能做到的最“节能”的方式 使用。
  2. 我不确定特征阅读是否是正确的选择,或者也许 我需要使用指示来代替。

此处的任何帮助将不胜感激:)

预先感谢,莫蒂。


我只会使用通知。

使用您写入内容的一项特征来触发传输开始。

然后还有另一个特性,您只需一次发送 20 个字节即可流式传输数据。大多数 BLE 片上系统 SDK 都有某种方法来控制数据流,因此您不会发送得太快。通常是在准备好接受下一个通知时触发回调。

为了了解正在发送的数据的大小,您可以让第一个通知包含大小,其余的通知包含数据。

这是最省时间和最省电的方式,因为每个连接间隔可以发送许多通知,而如果您进行大量读取,则通常每次需要两次往返。不要使用指示,因为每个指示基本上也需要两次往返。无论如何,它们也毫无用处。

您还可以通过交换更大的 MTU(这会降低 L2CAP/ATT 标头开销)来将速度提高一定百分比。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 BLE 传输大数据块的最佳方法 的相关文章

  • 如何让一个特性既可以读又可以写?

    我知道一个特征只能有一个属性和一个权限 并且该属性必须与权限具有相同的值 例如如果特征具有写入权限 则它必须具有可写的属性 那么如何使特征可读且可写 e g 怎么转这个 int permission BluetoothGattCharact
  • 检查 CBPeripheralManager.authorizationStatus() 现在它已被弃用

    CBPeripheralManager authorizationStatus and CBPeripheralManagerAuthorizationStatus根据苹果文档已弃用 现在检查用户是否已授予在后台使用蓝牙的权限的正确方法是什
  • 检查用户是否授予访问附近设备的权限

    我正在阅读文档here https developer android com guide topics connectivity bluetooth permissions用于专门针对 Android 12 的 Android 附近权限
  • ios CoreBluetooth[警告]未知错误:1309

    运行我正在开发的蓝牙应用程序时 我偶尔会在控制台上收到消息 CoreBluetooth 警告 未知错误 1309 即使该消息指出这是警告 它也会停止应用程序的执行 我已经能够通过关闭蓝牙设置然后重新打开来解决此问题 谁能告诉我导致此问题的原
  • 如何使用 Swift 中的核心蓝牙连接到 2 个或更多外设,同时从所有外设接收数据

    我已成功连接 接收和显示来自 1 个 BLE 设备的数据 但是 我的应用程序要求我连接到 2 个或更多这些设备 它们具有不同的地址 我读过可以同时连接到多个设备 但经过大量搜索后我找不到合适的指南或实现 我需要分配 2 个外围对象吗 或者有
  • 与 BLE 设备交互的 Android 应用程序无法在 Chromebook 上运行

    我有一个与自定义 BLE 设备交互的 Android 应用程序 此应用程序在 Android 版本 4 4 至 6 0 的设备上按预期运行 现在我想通过 Chromebook 上的 Google Playstore Chrome 的应用运行
  • 使用bluez5读取蓝牙低能耗信标的RSSI

    我想在 2 个蓝牙 le USB 适配器上同时读取蓝牙低功耗信标的 RSSI 我使用的是带有 bluez 5 和 LogiLink BT0015 适配器 CSR 芯片 的 fedora 20 系统 当仅连接一个适配器时 我的代码就像一个魅力
  • iOS - iOS 设备和外部配件 (BluetoothWatch) 之间 BLE 数据传输的 MTU 大小

    我正在为使用 BLE CoreBluetooth 的蓝牙手表开发 iOS 应用程序 Objective C 并且我的手表具有 GATT 蓝牙配置文件 iOS 应用程序最低支持来自 iOS7 我想知道如何使用 Core Bluetooth 框
  • Android 蓝牙低功耗特性通知计数限制:这是否因设备而异?

    Context 我正在构建一个针对 5 0 的 Android 应用程序 它使用 BLE 连接到多个外围设备 这些外设中的每一个都有许多 10 个特性 理想情况下 我想订阅这些特征中每一项的更改通知 然而 我从阅读中了解到 Android
  • 如何使用基于HM-10蓝牙模块的BLE Shield?

    我是 arduino 项目的新手 我想请你帮忙 我从 http imall iteadstudio com development platform arduino shields im130704001 html http imall i
  • 蓝牙 LE 中步数计数的服务和特性是什么?

    低功耗蓝牙中步数的服务 特征值 UUID 是什么 蓝牙文档的相应页面没有列出任何步骤 如何计算步数 计步设备是否使用跑步速度和步频服务 谢谢 有些设备确实使用跑步速度和节奏服务 您应该能够通过将 总距离 除以 瞬时步长 两者都可以在RSC测
  • 通过 iBeacon 监控和测距与 CoreBluetooth scanForPeripheralsWithServices 检测信标

    对于 iOS 对想要扫描 BLE 信标 外设的应用程序施加的限制 存在很多困惑 在阅读了几个博客和 Stack Overflow 答案后 我想看看我是否正确理解了所有问题 如果有什么理解错误或者遗漏的地方请指正 我仅指 iOS 7 及更高版
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 从 WP8 连接至 Polar H7 心率监测器

    有没有办法从 Windows Phone 8 连接到低功耗蓝牙设备 例如心率监测器 例如 Polar H7 我尝试过的一些背景 我看过这个 Windows 8 的示例 http code msdn microsoft com windows
  • Android BLE 扫描永远找不到设备

    几天以来 我尝试在我的应用程序中实现 BLE 连接 我知道我尝试连接的设备功能齐全 因此问题一定是我的代码 我用BluetoothLeScanner startScan 方法 但回调方法永远不会被调用 public void startSc
  • 从 BLE 设备同步读取多个特征(Android 推荐方法)

    我正在开发一个从 BLE 设备读取数据的 Android 应用程序 我在这里遇到了很多关于如何读取多个特征的解决方案 其中大多数都建议使用队列 我确实实现了 Queue 方法 并且我的代码中的一切都按预期正常工作 我开始这个帖子的原因是为了
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • Eddystone Beacon 中广播的 MAC ID 会改变吗?

    我将描述我的设置 我制作了一个模拟 Eddystone 信标的 Android 应用程序 我能够使用 PlayStore 中的 Beacon Toy 应用程序检测手机上的 Eddystone 信标 但问题是 自上次检查以来 显示的 MAC
  • 旧 Android SDK 版本上的 java.lang.NoClassDefFoundError

    我在 Google Play 上发布了我的应用程序的一个版本 今天早上醒来时发现了一些不满意的客户 该应用程序的最新版本集成了对蓝牙低功耗 BTLE 心率监测器的支持 该应用程序在 Android 4 3 和 4 4 上运行良好 但在 4
  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台

随机推荐

  • 打开 Bootstrap Modal 以在 Ruby on Rails 中编辑记录

    我有一个 用户 模型 我在用户索引页面上有一个用户列表 每个用户旁边都有一个编辑按钮 我想单击每个用户的编辑按钮 这将打开引导模式 在引导模式上 我想显示可以编辑的用户记录 编辑表单将来自 form html erb 部分 它将用于新的和编
  • Facebook Messenger 的自定义 URI 方案

    鉴于近期 鼓励 由 Facebook 迁移到单独的即时通讯应用程序 并作为 信息非常丰富 回答有关 Facebook 应用程序支持的 URL URI 方案的问题 我一直想知道有关 Facebook Messenger 应用程序的信息是否自定
  • 有没有办法将寄存器文件视为 ARMv8 中的数组(标量或 Neon)?

    假设我有一个短数组v说 8int64 t 我有一个算法需要访问该数组的不同元素 这些元素不是编译时常量 例如就像是v i j 2 其中i and j是不受任何类型的常量传播影响的变量 通常 我会保留内存中的数组 计算数组索引 从内存中的该位
  • 快线申报

    我有 2 条路线 例如 router get project id req res gt console log 1 router get project active req res gt console log 2 每当我调用 proj
  • 使用 xpath 选择第一个结果的子项

    我有一段 XML 其中相同的信息可以显示为不同节点的子节点 例如
  • 设置工具栏菜单项标题的样式

    我正在尝试实现菜单项设计 如下面的 YouTube 应用程序屏幕所示 我感兴趣的菜单项是操作菜单项 在这种情况下 G Currently my application Looks like the image below 我的样式和背景xm
  • Google 文档和 Google 云端硬盘中的 Google Apps MIME 类型是什么?

    以下每个文件扩展名的 MIME 类型是什么 gdoc gslide gsheet gdraw 谷歌文档 application vnd google apps document application vnd google apps kix
  • 在 JavaScript 类函数中使用 setTimeout()

    是否可以在 JavaScript 对象中使用 setTimeout 目前动画方法调用运行一次 似乎 setTimeout 没有完成其工作 我已经设法让它工作 但是采用了一种非常黑客的方法 在使用 setTimeout 的类之 外有一个函数
  • Javascript 相当于 Java SHA1PRNG

    我有一个使用 AES 128位 ECB PKCS5Padding java8 linux window 的Java应用程序 代码非常简单 KeyGenerator keygen KeyGenerator getInstance AES Se
  • 尝试添加深层链接我的 Android 应用程序

    我的应用程序工作正常 但每当我在清单中添加深层链接代码时 我的应用程序午餐图标就会消失 这是我的清单文件
  • 禁用/删除 Kendo Grid 默认组列上的关闭图标

    我正在使用 Kendo UI Grid 作为我的解决方案之一 我有一个任务 要求 我应该能够为网格提供默认分组 并且用户不应该能够从 UI 中删除此分组 有一种方法可以实现此目的 如 jsFiddle 示例所示 http jsfiddle
  • 美国网站的信用卡收单和贝宝解决方案

    我计划建立一个仅在美国接受收费的网站 是否有任何信用卡收单软件可以轻松地由 C ASP NET 网站实现 有人可以推荐一些吗 在数据库中保存 加密信用卡数据有什么规则吗 任何帮助都会很棒 正如 Albireo 所指出的 您不想将信用卡存储在
  • 如何给 dplyr 一个 SQL 查询并让它返回一个远程 tbl 对象?

    假设我有一个使用 dbplyr 打开的远程 tbl 并且我想对其使用 SQL 查询 可能是因为没有 dbplyr 翻译来实现我想要做的事情 我该如何给它返回一个远程 tbl 对象 The DBI dbGetQuery 函数允许您向 db 发
  • Java:JRadioButton 上的 ActionEvent 和 ItemEvent 有什么区别?

    释放鼠标按钮后 它们都会升起一次 并且都可以获取 JRadioButton 上的所有可用信息 对吧 有什么区别吗 An ItemListener当按钮的状态发生变化时 无论是通过用户与按钮交互还是以编程方式 通过setSelected方法
  • 从 Ubuntu 中完全卸载 PHP [关闭]

    Closed 这个问题是无关 目前不接受答案 有人可以告诉我如何从 Ubuntu 中完全卸载 PHP 吗 因此 我在安装 MySql 时遇到问题 似乎存在一些未满足的依赖关系 我想我搞砸了整个安装过程 有人可以帮我解决这个问题吗 这不是一个
  • ExifInterface 和 VM 中止发生奇怪的致命崩溃

    我在使用 ExifInterface 时遇到了奇怪的致命崩溃 导致崩溃的行是这样的 非常简单 Foto java 341 ExifInterface exif new ExifInterface filename 我只看到一些图片就崩溃了
  • 用户友好的 URL 而不是查询字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 在 php 中使用 seo 用户友好 codeigniter 中的自定义路由 我正在开发一个 CMS 我想使用用户友好的 URL 而不是查询字符串 e g mysite com cat 1 gt my
  • 多个模型之间的多对多字段关系

    我有以下代表书籍和作者的模型 一本书可以有多个作者 一个作者可以写多本书 所以我使用 Django 的ManyToManyField键入以将两个模型相互链接 我可以添加一个Book 也许使用 Django Admin 并创建一个Author
  • 如何在 Swift 中创建二维数组?

    你好 我是 Swift 新手 我正在尝试将经度和纬度以及地名从地图的坐标对象保存到多维数组 即 谁能帮我如何动态创建这些 var pinArray 0 Lat 51 130231 var pinArray 0 Lon 0 189201 va
  • 通过 BLE 传输大数据块的最佳方法

    我是 BLE 的新手 希望您能够指出我正确的实施方法 我正在开发一个应用程序 其中外围 电池供电 设备不断聚合传感器读数 在移动端应用程序上会有一个 同步 按钮 按下按钮后 我想将外围设备中积累的所有传感器读数传输到移动应用程序 同步之间的