问题:
- 通过 bulkTransfer 发送数据的时候,因为 bulkTransfer 会限制发送大小为 16k
- 这就会导致,如果需要发送的数据大于 16k 时,数据不能完整发送,超出 16k 的部分没了
解决办法:
-
可以通过对需要发送的数据进行分包处理,然后依次发送
-
逻辑很简单,直接上代码,仅供参考:
public void sendMessageToPoint(byte[] buffer) {
int pack = buffer.length / 16384;
if (buffer.length % 16384 > 0)
pack = pack + 1;
for (int i = 0; i < pack; i++) {
byte[] newBuffer = Arrays.copyOfRange(buffer, i * 16384, 16384 + i * 16384);
myDeviceConnection.bulkTransfer(epBulkOut, newBuffer, newBuffer.length, 0);
}
}