Espruino:Справочник по API/Класс NRF/findDevices(): различия между версиями
Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
Строка 68: | Строка 68: | ||
Вы также можете воспользоваться [https://www.espruino.com/Reference#l_NRF_connect NRF.connect()], задав в аргументе лишь возвращенную строку id, что может пригодиться, если вам надо подключиться к конкретному устройству. | Вы также можете воспользоваться [https://www.espruino.com/Reference#l_NRF_connect NRF.connect()], задав в аргументе лишь возвращенную строку id, что может пригодиться, если вам надо подключиться к конкретному устройству. | ||
{{Примечание1|При использовании findDevices() режим приема данных включится на 2000 миллисекунд (или даже дольше – в зависимости от того, какое значение вы укажете). Это очень энергоемкий процесс (12 мА или вроде того), так что используйте его с умом или рискуете очень быстро разрядить батарею.}} | |||
{{Примечание1|Поле '''data''' содержит данные последнего присланного пакета. Но пакетов может быть больше одного. Чтобы извлечь данные каждого пакета по отдельности, используйте вместо findDevices() функцию [https://www.espruino.com/Reference#l_NRF_setScan NRF.setScan()].}} | |||
== Примеры == | == Примеры == |
Текущая версия от 17:45, 12 июня 2023
Функция NRF.findDevices()[1]
Синтаксис
NRF.findDevices(callback, options)
Параметры
- callback – функция, которая будет вызвана с получением пакетов объявлений (в виде объектов BluetoothDevice), или undefined, чтобы прекратить сканирование.
- options – время сканирования в миллисекундах (по умолчанию – 2000) или опциональный объект в формате {filters: ..., timeout : ..., active: bool} (такой передается функции NRF.requestDevice()) для фильтрации устройств.
Возвращаемое значение
Описание
Это вспомогательная функция, возвращающая список BLE-устройств, обнаруженных в диапазоне сканирования. Эта функция неявно использует NRF.setScan() и сопоставляет результаты.
Например, если написать следующее...
NRF.findDevices(function(devices) {
console.log(devices);
}, 1000);
...то в консоли будет напечатано следующее:
[
BluetoothDevice {
"id": "e7:e0:57:ad:36:a2 random",
"rssi": -45,
"services": [ "4567" ],
"serviceData" : { "0123" : [ 1 ] },
"manufacturerData" : [...],
"data": new ArrayBuffer([ ... ]),
"name": "Puck.js 36a2"
},
BluetoothDevice {
"id": "c0:52:3f:50:42:c9 random",
"rssi": -65,
"data": new ArrayBuffer([ ... ]),
"name": "Puck.js 8f57"
}
]
Более подробно о структуре возвращаемых данных читайте в описании функции NRF.setScan().
Если вам нужно просканировать какие-то специфические устройства, то таймаут можно заменить на объект в формате {filters: ..., timeout : ..., active: bool} при помощи фильтров, о которых рассказывается в описании функции NRF.requestDevice(). Например, для поиска Espruino-устройств по manufacturerData напишите следующее:
NRF.findDevices(function(devices) {
...
}, {timeout : 2000, filters : [{ manufacturerData:{0x0590:{}} }] });
Затем вы можете воспользоваться BluetoothDevice.gatt.connect() на возвращенном устройстве, чтобы создать соединение.
Вы также можете воспользоваться NRF.connect(), задав в аргументе лишь возвращенную строку id, что может пригодиться, если вам надо подключиться к конкретному устройству.
Примеры
См.также
Внешние ссылки