我是BLE开发的新手。我想通过具有最大吞吐量的BLE连接发送大量数据。
我有一个GATT服务器,它运行在Linux上,还有一个客户端,它作为一个应用程序运行在Android上。我已经创建了一个最大允许大小(512字节)的自定义特性。我请求它从应用程序与一个读取操作。每次我接到在服务器端读取的电话,我都会更改它的值,直到我处理完所有的数据(我知道这不是最好的方法,但这不是目前的问题)。
至于使用android的requestConnectionPriority(CONNECTION_PRIORITY_HIGH)的连接参数,我可以看到,他们试图协商7.5ms的连接间隔,但由于某种原因,连接参数更改为15 As,并且保持不变。也许我的手机不支持,但我不这么认为。
下一件事,也是主要的问题是MTU。使用hcidump,我可以看到他们开始协商MTU,因为我可以看到来自客户端的MTU请求的值为517(默认情况下)和服务器响应具有相同的值。但是当我触发数据交换时,我可以看到(使用Wireshark)数据包只包含32字节的有效负载。我不知道这是不是我的蓝牙适配器的限制。
发布于 2018-05-23 20:47:22
MTU数据包可以由多个无线数据包组成,32字节的无线数据包有效负载可能是蓝牙适配器中的一个限制。此时没有手机支持7.5ms连接间隔。如果您的手机和设备支持它,您还应该启用数据长度扩展。这将允许您在整个连接事件中传输多个MTU。
https://stackoverflow.com/questions/50255842
复制相似问题