Как мне ответить на запрос на чтение или запись, используя cordova-plugin-bluetoothle?
Central - использовал этот плагин cordova для сканирования (don/cordova-plugin-ble-central)
Периферийные - использовали этот плагин cordova для рекламы моего сервиса (randdusing/cordova-plugin-bluetoothle)
Итак, у меня есть два ионных (Android) приложения. Моя цель - прочитать и написать характеристику, которую я инициализировал в своем сервисе. Я уже пытался прочитать встроенную характеристику с помощью плагина Дона и получил имя устройства. Теперь я хочу прочитать значение моей собственной характеристики. Поскольку я использовал для этого плагин Рранда, он дает этот метод,
реагировать
Ответить на запрос на чтение или запись
bluetoothle.respond(success, error, params);
Params
//This was a read
var params = {
"requestId":0,
"value":"UmVhZCBIZWxsbyBXb3JsZA==" //Read Hello World
};
Вот как я начинаю свою периферию для рекламы
this.platform.ready().then((readySource) => {
this.sourceToast(readySource);
this.bluetoothLE.initialize(this.paramsInit).then(paramsInitResult => {
this.bleInitialize = paramsInitResult;
this.bluetoothLE.initializePeripheral(this.paramsInitPeripheral).then(peripheral => {
this.bleInitializePeripheral = peripheral;
this.bluetoothLE.enable();
this.bluetoothLE.getAdapterInfo().then(adapter => {
this.device = adapter;
this.bluetoothLE.addService(this.paramsService).then(params => {
this.bleAddService = params;
});
});
});
});
});
Теперь моя проблема в том, как я буду прослушивать статус readRequested, который можно получить из initPeripheral params.
Так что, когда статус == readRequested, я надеюсь, что сделать что-то вроде этого
let p = {
requestId:0,
value:"5"
};
this.bluetoothLE.respond(p).then(onFullfilled => {
onFullfilled => {
console.log(onFullfilled);
}
}, onrejected => {
console.log('respond err',onrejected);
});
И если это работает, я возвращаю значение "5", используя плагин Дона. Любой совет будет принята с благодарностью! Что касается того, почему я использовал два плагина, я считаю, что плагин don-ble-центра легче реализовать, чем Rrand.
Обновление: теперь я вижу, что, как я структурировал свой код, кажется, что каждый раз, когда я инициализирую Периферийный, он всегда возвращается к этому
{
"request": true
"restoreKey": "bluetoothleplugin"
}
Поэтому мне нужно, чтобы он работал на конструкторе, но я думаю, что метод запускается только один раз, поэтому я не получаю статус readRequested. Maan