Библиотека Bleno BLE не передает ожидаемое значение характеристики - PullRequest
0 голосов
/ 25 мая 2018

Я работаю над приложениями для Android / iOS для периферийного устройства IOT, которое отправляет данные BLE.Оба приложения на самом деле довольно хорошо работают с физическим периферийным устройством (которое использует библиотеку BLE от Texas Instrument).

Теперь, когда фактические периферийные устройства работают, я пытаюсь написать эмулятор с Bleno так что команда разработчиков может быть более эффективной, но у меня возникают проблемы с передачей статического значения строки для характеристики.

Я настраиваю свою характеристику следующим образом:

var bleCharacteristic = function() {
  bleCharacteristic.super_.call(this, {
    uuid: '0321',
    properties: ['read'],
    value: new Buffer('12345'),
  }); 
};

Блено говорит, что мне нужно использовать буфер node.js для отправки строковых данных, но как на Android, так и на IOS полученные данные не 12345, а скорее как-то так:

{
  value: '3031333031383133303630303864666234643030323030333065303332656530313330313831333036303,
}

Мыслипочему это может происходить?Есть ли какие-то другие рекламные данные, которые я забыл установить в эмуляторе, чтобы значение вернулось как ожидалось?

Вот пример того, как я читаю значение полезной нагрузки.Это из нашего приложения для Android:

@Override
public void onCharacteristicRead(final BluetoothGatt gatt, final BluetoothGattCharacteristic characteristic, int status) {
    ...
    String payload = bytesToHex(characteristic.getValue());
    ...
}

ПРИМЕЧАНИЕ. Дайте мне знать, есть ли другой соответствующий код, который я могу опубликовать.

1 Ответ

0 голосов
/ 30 июня 2018

Ваша характеристика выглядит нормально.Хотя я ничего не знаю об Android, в iOS вы можете получить значение, позвонив по этому номеру.

peripheral.readValue(for: yourCharacteristic)

Вы также можете использовать вспомогательные приложения BLE, такие как LightBlue, для изучения ваших характеристик.

...