На моем компьютере с Ubuntu я использую React Native и пакет BLE реактивный-native-ble-plx.
Согласно документам, я сделал следующее:
- Сканировано для устройств
- Подключено к устройству
- device.discoverAllServicesAndCharacteristics
- writeCharacteristicWithResponseForDevice
Моя проблема заключается в чтении ответа, полученного от отправки моя команда.
RX характеристика c доступна для записи, но TX только для уведомления и не для чтения. Поэтому мне нужно отслеживать характеристики c с помощью monitorCharacteristicForDevice, однако я не могу заставить это работать.
Я никогда не получаю ни «Монитор успеха», «Ошибка при получении данных с устройства», ни «Ошибка монитора» 'в коде ниже.
Как мне прочитать возврат?
monitorDevice = () => {
this.setState({monitoring: true})
console.log(this.state.servicesDiscovered)
if(this.state.servicesDiscovered){
{this.manager.monitorCharacteristicForDevice(this.state.connectedTo,
SERVICE_UUID,
TX_CHARACTERISTIC,
(error, characteristic) => {
if (error) {
console.error("Error at receiving data from device", error);
return
}
else {
this.setState({monitoring: true})
console.log('monitor success')
console.log('monitor success' + characteristic.value);
this.state.messagesRecieved.push(characteristic.value)
}
})
}
}
else{
console.log("Monitor failure")
}
}
checkBattery = () => {
if(this.state.monitoring){
this.manager.writeCharacteristicWithResponseForDevice(this.state.connectedTo,
SERVICE_UUID,
RX_CHARACTERISTIC,
"YmF0dGVyeQ==")
.then(characteristic => {
console.log("Successfully sent: " + characteristic.value)
return
})
.catch(err => {
console.log(err)
})
}
else{
alert("Not monitoring")
}
}