react native ble plx:写入失败后断开连接

问题描述

情况是 onPressIn 我需要向 ble 设备发送写入命令,直到触发 onPressOut

这是我的 writeMessage 函数

  const writeMesage = async (message = 'c1') => {
// bleManager.cancelTransaction(transactionId);
const senddata = base64.encode(message);
if (deviceid) {
  const isConnected = await bleManager.isDeviceConnected(deviceid);
  if (!isConnected) {
    await bleManager
      .connectToDevice(deviceid,{ autoConnect: true,requestMTU: 200 })
      .then((device) => {
        (async () => {
          const services =
            await device.discoverAllServicesAndcharacteristics();
          const characteristic = await getServicesAndcharacteristics(
            services
          );
        })();

        return device.discoverAllServicesAndcharacteristics();
      })
      .then((device) => {
        console.log('then2',{ device: device });
        // return this.setupNotifications(device)
        return true;
      })
      .then(
        () => {
          console.log('Listening...');
        },(error) => {
          console.log('Connection error' + JSON.stringify(error));
        }
      );
    await bleManager.stopDeviceScan();
  } else {
    await bleManager
      .writeCharacteristicWithoutResponseForDevice(
        deviceid,serviceUUID,characteristicsUUID,senddata
      )
      .then((characteristics) => {
        console.log({ characteristics });
      })
      .catch((e) => {
        console.log({ e });
      });
  }
  return;
} else {
  console.log('No device is connected');
}
};

我是这样实现的:

<TouchableOpacity
                style={{
                  display: 'flex',height: 50,width: 50,borderRadius: 100,borderColor: '#58C2A2',justifyContent: 'center',alignItems: 'center',backgroundColor: '#1A8E6B'
                }}
                disabled={isLocked}
                onPressIn={() => {
                  let interval = setInterval(() => {
                    writeMesage('c1');
                  },20);
                  setPressUpInterval(interval);
                }}
                onPressOut={() => clearInterval(pressUpInterval)}
              >
                <Image source={upArrow} />
              </TouchableOpacity>

它会一直工作,直到发现写入失败,然后设备断开连接。

LOG error in monitering [BleError: Device D4:36:39:6F:FF:41 was disconnected]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...