使用 react-native-ble-plx 在 BLE 上接收的数据不包含所有预期数据

问题描述

我正在开发一个使用 react-native-ble-plx 和 react-native-ble-plx 的应用程序

它正在使用 microchip 透明 UART 服务和透明 TX 特性

我可以连接、写入数据并且侦听器正在接收一些数据,但我错过了很多......

在这种模式下,它使用通知here

我应该收到 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 (将#修改为@)