Espruino:Справочник по API/Класс NRF/findDevices(): различия между версиями
Myagkij (обсуждение | вклад) (Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= ==Синтакс...») |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
{{Myagkij-редактор}} | {{Myagkij-редактор}} | ||
=<ref>[ www.espruino.com - ]</ref>= | =Функция NRF.findDevices()<ref>[https://www.espruino.com/Reference#t_l_NRF_findDevices www.espruino.com - NRF.findDevices]</ref>= | ||
==Синтаксис== | ==Синтаксис== | ||
<syntaxhighlight lang="javascript | <syntaxhighlight lang="javascript"> | ||
NRF.findDevices(callback, options) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Параметры== | ==Параметры== | ||
* '''callback''' – функция, которая будет вызвана с получением пакетов объявлений (в виде объектов [https://www.espruino.com/Reference#BluetoothDevice BluetoothDevice]), или undefined, чтобы прекратить сканирование. | |||
* '''options''' – время сканирования в миллисекундах (по умолчанию – 2000) или опциональный объект в формате {filters: ..., timeout : ..., active: bool} (такой передается функции [https://www.espruino.com/Reference#l_NRF_requestDevice NRF.requestDevice()]) для фильтрации устройств. | |||
==Возвращаемое значение== | ==Возвращаемое значение== | ||
Строка 21: | Строка 22: | ||
==Описание== | ==Описание== | ||
Это вспомогательная функция, возвращающая список BLE-устройств, обнаруженных в диапазоне сканирования. Эта функция неявно использует NRF.setScan() и сопоставляет результаты. | |||
Например, если написать следующее... | |||
<syntaxhighlight lang="javascript"> | |||
NRF.findDevices(function(devices) { | |||
console.log(devices); | |||
}, 1000); | |||
</syntaxhighlight> | |||
...то в консоли будет напечатано следующее: | |||
<syntaxhighlight lang="javascript"> | |||
[ | |||
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" | |||
} | |||
] | |||
</syntaxhighlight> | |||
Более подробно о структуре возвращаемых данных читайте в описании функции [https://www.espruino.com/Reference#l_NRF_setScan NRF.setScan()]. | |||
Если вам нужно просканировать какие-то специфические устройства, то таймаут можно заменить на объект в формате {filters: ..., timeout : ..., active: bool} при помощи фильтров, о которых рассказывается в описании функции [https://www.espruino.com/Reference#l_NRF_requestDevice NRF.requestDevice()]. Например, для поиска Espruino-устройств по manufacturerData напишите следующее: | |||
<syntaxhighlight lang="javascript"> | |||
NRF.findDevices(function(devices) { | |||
... | |||
}, {timeout : 2000, filters : [{ manufacturerData:{0x0590:{}} }] }); | |||
</syntaxhighlight> | |||
Затем вы можете воспользоваться [https://www.espruino.com/Reference#l_BluetoothRemoteGATTServer_connect BluetoothDevice.gatt.connect()] на возвращенном устройстве, чтобы создать соединение. | |||
Вы также можете воспользоваться [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()].}} | |||
== Примеры == | == Примеры == | ||
Строка 29: | Строка 78: | ||
=См.также= | =См.также= | ||
=Внешние ссылки= | =Внешние ссылки= | ||
Строка 35: | Строка 84: | ||
<references /> | <references /> | ||
{{Навигационная таблица/Espruino | {{Навигационная таблица/Портал/Espruino}} | ||
Текущая версия от 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, что может пригодиться, если вам надо подключиться к конкретному устройству.
Примеры
См.также
Внешние ссылки