Espruino:Справочник по API/Класс NRF/findDevices(): различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
Строка 7: Строка 7:
==Синтаксис==
==Синтаксис==


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
NRF.findDevices(callback, options)
NRF.findDevices(callback, options)
</syntaxhighlight>
</syntaxhighlight>
Строка 26: Строка 26:
Например, если написать следующее...
Например, если написать следующее...


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
NRF.findDevices(function(devices) {
NRF.findDevices(function(devices) {
   console.log(devices);
   console.log(devices);
Строка 34: Строка 34:
...то в консоли будет напечатано следующее:
...то в консоли будет напечатано следующее:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
[
[
   BluetoothDevice {
   BluetoothDevice {
Строка 58: Строка 58:
Если вам нужно просканировать какие-то специфические устройства, то таймаут можно заменить на объект в формате {filters: ..., timeout : ..., active: bool} при помощи фильтров, о которых рассказывается в описании функции [https://www.espruino.com/Reference#l_NRF_requestDevice NRF.requestDevice()]. Например, для поиска Espruino-устройств по manufacturerData напишите следующее:
Если вам нужно просканировать какие-то специфические устройства, то таймаут можно заменить на объект в формате {filters: ..., timeout : ..., active: bool} при помощи фильтров, о которых рассказывается в описании функции [https://www.espruino.com/Reference#l_NRF_requestDevice NRF.requestDevice()]. Например, для поиска Espruino-устройств по manufacturerData напишите следующее:


<syntaxhighlight lang="javascript" enclose="div">
<syntaxhighlight lang="javascript">
NRF.findDevices(function(devices) {
NRF.findDevices(function(devices) {
   ...
   ...

Версия от 19:59, 23 мая 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, что может пригодиться, если вам надо подключиться к конкретному устройству.

Примечание: При использовании findDevices() режим приема данных включится на 2000 миллисекунд (или даже дольше – в зависимости от того, какое значение вы укажете). Это очень энергоемкий процесс (12 мА или вроде того), так что используйте его с умом или рискуете очень быстро разрядить батарею.

Примечание: Поле data содержит данные последнего присланного пакета. Но пакетов может быть больше одного. Чтобы извлечь данные каждого пакета по отдельности, используйте вместо findDevices() функцию NRF.setScan().

Примеры

См.также

Внешние ссылки