如何将音频 HEX 文件发送到 Ble 设备

Posted

技术标签:

【中文标题】如何将音频 HEX 文件发送到 Ble 设备【英文标题】:How to Send an Audio HEX file to Ble Device 【发布时间】:2015-07-14 11:12:55 【问题描述】:

我有一个可以使用 android 的 ble 设备。 它通过Android应用程序很好地发送和接收数据。 但现在我的问题是我想将一些音频 HEX 文件发送到我的 BLE 设备。 并且它大于 20 个字节。 我怎样才能将这样的数据发送到 BLE 设备。 ??

【问题讨论】:

【参考方案1】:

发送超过20字节的数据,需要更改MTU-exchange。

对于 API LEVEL 21,您可以使用 requestMtu (Android Developer),它与外围设备协商,您可以定义直到 512 字节。

MTU 值在外设端定义。请记住,您可以发送的数据大小是 MTU-3 字节。

对于小于 21 的 API LEVEL,MTU 是预定义的,您无法修改。

【讨论】:

我已经为此苦苦挣扎了好几个小时,写入 512 个字节并得到 509 个字节。您介意解释一下为什么最大数据大小应该是 MTU - 3 个字节吗? 基本上***.com/questions/36435575/…【参考方案2】:

大小限制可以不同于 20,我认为 MTU 大小是可以协商的,因此您永远不应该硬编码任何大小假设。

要做到这一点,首先在 onCharacteristicReadRequest 中,您只需检查偏移量并将该点的所有数据提供给响应。

那么在onDescriptorWriteRequest中,如果preparedWrite设置为true,则需要将得到的值存储起来,一旦调用onExecuteWrite()就将它们组合起来。

示例实现在:https://github.com/DrJukka/BLETestStuff/blob/master/MyBLETest/app/src/main/java/org/thaliproject/p2p/mybletest/BLEAdvertiserLollipop.java

【讨论】:

顺便说一句,昨天检查并发现我可以将 MTU 大小设置为高达 517 字节。 518 已经给出了一些错误。【参考方案3】:

您可以继续的一种方法是将音频十六进制拆分为小块数据。您可以使用串行端口配置文件发送这些数据块。收到所有数据后,您可以使用一些合并算法进行组合和存储(谷歌它)然后将其恢复为音频十六进制文件。

【讨论】:

以上是关于如何将音频 HEX 文件发送到 Ble 设备的主要内容,如果未能解决你的问题,请参考以下文章

在 UWP 应用中使用 AudioGraph 将音频输出发送到两台设备

iOS Ble开发丢包问题

如何将结构发送到 BLE 写入值?

BLE 在将数据从 iOS 7.1 发送到 iOS 8 时花费了太多时间

如何将音频输出发送到 Apple TV?

Android + ESP32 通过蓝牙 (BLE) 发送数据