问题描述
我正在开发一个使用 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,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);
}
}
有没有办法确保不会错过任何通知?并确定数据包接收的顺序?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)