如何使用Flutter [Flutter蓝色]从蓝牙LE设备获得流媒体更新?



我正在开发一个自定义蓝牙硬件的应用程序。设备的规格有许多可以通过特定的蓝牙特性发送到设备的命令。

我们目前正在使用这个版本的Flutter Blue;flutter_blue:^0.7.2

到目前为止,我们已经发现了设备,连接,并发现正确的服务和特征。

我们还让它发送命令并接收预期的响应。

通过列出正确的特征,如;

await notify.setNotifyValue(true);
notify.value.listen((event) {
_handleEvent(event);
});

,然后发送如下命令;

await recv.write(command, withoutResponse: true);

(其中命令是表示有效负载字节的List)。

当响应包含多个数据包时,问题就出现了。在这种情况下,接收到初始数据包,但以下预期的数据包没有到达。

在ios上,它的工作稍微好一点,因为初始数据包的大小是Android响应的4倍,并且包含预期的数据,但如果数据太大,则不包含。

我试图修改MTU,但这似乎对问题没有任何影响。

任何帮助都将是非常感谢的。

在这种情况下,问题完全与MTU设置有关。

我的印象是,如果你要求设置太高,它会自动到它的最高可能值。但看起来情况并非如此。

如果您看到类似的问题,请尝试将MTU设置为251