我有一个Android客户端,作为一个中心,在我的MAC(外围设备)上有一个应用程序,这个中心连接并发送数据。
此时,在调用writeCharacteristic(..)接收onCharacteristicWrite(..)回调后,我需要等待近100ms。我正在发送字符串。如果我发送较小的字符串,吞吐量很大(可以理解)。当字符串包含大约200个字符并且我发送20个字节的块时,在外围设备上看到整个字符串之前需要将近一秒钟。当我在写入特性之前将写入类型设置为NO_RESPONSE时,我看不到外设上的数据。
连接后,我已完成以下操作以提高吞吐量:
我看到iOS中心 - iOS外围设备之间的吞吐量大幅增加。我不明白为什么Android中心 - iOS外围设备不应该以同样的方式工作。根据我的理解,Android和iOS使用相同的芯片。
任何原因导致表现如此糟糕?我还能做些什么来提高吞吐量吗?
答案 0 :(得分:0)
请查看MTU大小。我的经历:
使用iOS中央,中央自动启动MTU大小协商,并使用一些较大的值。我认为它大于200字节。
在我测试的大多数Android设备上,这不会自动启动,但您必须通过应用程序(中央)启动MTU大小协商。如果您不这样做,Android会将您的数据分成20个字节。这对您的吞吐量有很大影响。