问题描述
情况是 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 (将#修改为@)