Как корректно отправить команду BLE с использованием библиотеки react-native-ble-manager

Доброго всем времени суток. Я никогда не работал с блютуз, потому прошу понять-простить :)

Я использую библиотеку react-native-ble-manager и пытаюсь отправить команду 010600070001F1 на устройство и получить ответ. Я использую следующий алгоритм действий: (приведу его упрощенно)

    // Connect to device
    await BleManager.connect(peripheral)
    // Before startNotification you need to call retrieveServices
    await BleManager.retrieveServices(peripheral)
    // To enable BleManagerDidUpdateValueForCharacteristic listener
    await BleManager.startNotification(peripheral, service, characteristic)
      // Add event listener
    eventEmitter.addListener(
        'BleManagerDidUpdateValueForCharacteristic',
        ({ value, peripheral, characteristic, service }) => {
            // Convert bytes array to string
            const data = bytesToString(value);
            console.log(`Recieved ${data} for characteristic ${characteristic}`);
            alert(`Recieved ${data} for characteristic ${characteristic}`);
        }
    );

    BleManager.write(peripheral, service, characteristic, data)

Скажите, правильный ли этот алгоритм, или я что-то упустил? Стоит задача послать команду 010600070001F1, в параметр дата команды write я передаю следующее:

stringToBytes(":010600070001F1/r/n")

правильно ли это? Может, я использую какие-то лишние символы (: или /r/n) или наоборот чего-то не хватает?

При этом при выполнении функции BleManager.retrieveServices я получаю следующий набор данных:

"characteristics": 
[{"characteristic": "2a00", "properties": [Object], "service": "1800"}, 
{"characteristic": "2a01", "properties": [Object], "service": "1800"}, 
{"characteristic": "2a02", "properties": [Object], "service": "1800"}, 
{"characteristic": "2a04", "properties": [Object], "service": "1800"}, 
{"characteristic": "2a05", "descriptors": [Array], "properties": [Object], "service": "1801"}, 
{"characteristic": "ffe1", "descriptors": [Array], "properties": [Object], "service": "ffe0"}, 
{"characteristic": "ffe2", "properties": [Object], "service": "ffe0"}], 
"id": "19:11:07:09:21:0D", "name": "JDY-33-BLE", "rssi": 0, "services":  [{"uuid": "1800"}, {"uuid": "1801"}, {"uuid": "ffe0"}]}

Не могли бы вы объяснить, что значат эти строки или скинуть ссылку на место, где про это можно почитать? В целом не понятно, почему у устройства есть три своих сервиса - `[{"uuid": "1800"}, {"uuid": "1801"}, {"uuid": "ffe0"}]}, что за характеристики+сервисы идут выше, и к чему из этого надо обращаться для записи? Я пытаюсь подключиться к устройству "19:11:07:09:21:0D" и согласно документации команды write должен указать следующие параметры:

peripheralId - String - the id/mac address of the peripheral.
serviceUUID - String - the UUID of the service.
characteristicUUID - String - the UUID of the characteristic.

Не могли бы вы объяснить мне, как это соотносится с инормацией выше и что я туда должен прописать? Пока что я использую команду как `write("19:11:07:09:21:0D", "ffe0", "ffe1", stringToBytes(":010600070001F1/r/n")), укажите пожалуйста на мои ошибки!

Спасибо!


Ответы (0 шт):