0

我正在使用 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);
  }
}

有没有办法确保不会错过任何通知?并确定数据包接收的顺序?

4

0 回答 0