Espruino:Справочник по API/Класс NRF/findDevices()

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция 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().

Примеры

См.также

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