Как корректно отправить команду 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")), укажите пожалуйста на мои ошибки!
Спасибо!