微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?