我正在使用 react-native-ble-plx 和 react-native-ble-plx 开发一个应用程序
它使用 Microchip 透明 UART 服务和透明 TX 特性
我可以连接,写入数据并且监听器正在接收一些数据,但我错过了很多......
在这种模式下,它使用通知,如此处所述
我应该收到 2048 个值,但我只得到了一半多一点(1000 到 1200 之间)。
这是我写入数据的代码(如果意外结束,则超时)
export async function writeData(device, data) {
responses = new Array();
responseComplete = false;
function checkTimeout() {
if (lastLen === responses.length) {
responseComplete = true;
} else {
clearTimeout(responseTimeout);
responseTimeout = setTimeout(checkTimeout, TIMEOUT);
}
}
responseTimeout = setTimeout(checkTimeout, TIMEOUT);
await device.writeCharacteristicWithResponseForService(SERVICE, UART_TX, encode(data));
device.monitorCharacteristicForService(SERVICE, UART_TX, listener);
}
和监听器(我将所有消息存储在数组响应中)
function listener(error, characteristic) {
if (!error) {
const msg = decode(characteristic.value);
// console.log(`msg`, msg);
if (msg.endsWith("}\n")) {
responseComplete = true;
}
responses.push(msg);
lastLen = responses.length;
} else {
console.log(`error`, error);
}
}
有没有办法确保不会错过任何通知?并确定数据包接收的顺序?