通过安卓设备发送BLE“发送Blob请求”的指令。

3

是否有人在使用安卓设备进行Blob请求(长时间读取)?

我们正在与TI的CC2540一起工作,连接到安卓4.4。 我们尝试读取一个长特征值(大小超过23个字节)。在安卓BLE的API中,我们没有看到readBlob或readLong方法。

我们期望安卓BLE堆栈通过读取特征表示格式(与通知方式相同)来为我们完成工作,但它并不能正常工作。

我们不知道如何通过安卓发送Blob请求。

2个回答

2

请让我明确一下,Android只有一个用于读取特征值的方法readCharacteristic(characteristic)。您可以使用此方法获取任何长度的特征值。 Android负责构建ReadBlob请求;这都在后端完成。但是,您需要更改CC2540的代码以使其与ReadBlob请求配合使用。一旦您在CC2540端进行了所有必需的更改,在从Android调用readCharacteristic()时,您将在onCharacteristicRead()回调中获得整个特征值,并且您可以对其进行访问。


你能否解释一下在GATT服务器(这里是CC2540)上可以做些什么来支持BLOB读取? - Harsh Vardhan

0

不行,BLE 特征值的长度限制为 20 字节。因此,如果您想发送或接收超过 20 字节的数据,您需要将其分成 20 字节一组的块。请参见此主题以了解更多信息。


4
传输时限制的是传输的字节数,而不是属性中可以包含的字节数。因此,有一个“读取 blob 请求”方法,它接受偏移量以允许分步读取属性。然而,似乎没有相应的写入方法。我不知道 Android 是否实现了读取方法。 - Tim Tisdall
啊,我误解了问题。所以我发现特征值可以是比一次传输的字节数更大的字节数组。在Android中,如果你设置特征值,可以提供偏移量。我正在思考是否有一种方法可以开始写入,并让堆栈处理所有的传输。 - JPS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接