Closed phoebewow closed 3 years ago
每次发送的时候都需要设置包大小为MTU-3。 下位机粘包问题,不能完全指望延时来解决,因为读buffer的时候就可能已有多个包在buffer里了,应该根据协议在下位机程序里自行拆包。不然你下位机读buffer的周期需小于app发送包延时
val options = WriteOptions.Builder() .setPackageSize(data.size) .setPackageWriteDelayMillis(5) .setRequestWriteDelayMillis(10) .setWaitWriteResult(true) .setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE) .build() builder.setWriteOptions(options) connection?.execute(builder.build())
是这样子吗?我的最大MTU是158的
是的
按照上面的方法,现在好像不会出现断帧的情况了,还需要多测一下,另外还想问问,这个自动分包的发送间隔,按设置来看是间隔5MS,但我用逻辑分析仪来看的话,自动分的包每个包间隔了44MS,部分更是高达104MS
MTU设置为150,发送数据大多数都正常,可以完整发送,但偶尔在发送时却会发生发送的数据被分包的情况,这个有解决方法吗? 还有就是有时发送的数据,明明相隔了超过50毫秒,但在下位机中却是收到粘包的数据