Operation was cancelled react native ble-plx
При попытке отправить на устройство сообщение выпадает ошибка: Ошибка при записи: Operation was cancelled. Метод для отправки сообщения:
writeDataToDevice = (deviceId: string, data: string) => {
const convertedData = Utils.stringToBinary(data);
console.log(convertedData)
console.log(deviceId);
this.bleManager
.writeCharacteristicWithResponseForDevice(
deviceId,
UUID,
CHARACTERISTIC_UUID_RX,
convertedData
)
.then(() => {
console.log('Отправлено: ' + data + ' на устройство: ' + deviceId);
})
.catch((error) => {
console.error('Ошибка при записи: ' + error.message);
});
};
Метод, в котором вызывается метод отправки:
if (this.trainingData.idAndSeriesNumber !== undefined && this.trainingData.idAndSeriesNumber.has(participantId)) {
const value = this.trainingData.idAndSeriesNumber.get(participantId);
if (value !== undefined) {
console.log('Пробую записать данные: ' + deviceId + ' ' + value);
writeDataToDevice(deviceId, value.toString());
}
}
Ключевая проблема в том, что пока я делал всю логику в 1 классе (изначально был 1 TrainingLogic, в последствии разделил на TrainingLogic, SimpleTrainingExpectantFormat и SimpleTrainingUtils), то всё работало без ошибок, как решил разделить их, то выпадает эта ошибка. Вот полные логи:
LOG Проверка на подключенность:
LOG Id: A0:76:4E:4B:95:32 подключён
LOG Id: A0:76:4E:4B:CE:16 подключён
LOG Id: A0:76:4E:4E:DA:72 подключён
LOG Id: 34:B4:72:4D:DC:AE подключён
LOG Пробую записать данные: A0:76:4E:4B:CE:16 0
LOG 00110000
LOG A0:76:4E:4B:CE:16
LOG Пробую записать данные: A0:76:4E:4E:DA:72 1
LOG 00110001
LOG A0:76:4E:4E:DA:72
LOG Пробую записать данные: A0:76:4E:4B:95:32 2
LOG 00110010
LOG A0:76:4E:4B:95:32
ERROR Ошибка при записи: Operation was cancelled
LOG Отправлено: 0 на устройство: A0:76:4E:4B:CE:16
LOG Отправлено: 1 на устройство: A0:76:4E:4E:DA:72
Источник: Stack Overflow на русском