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

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
Нет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 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) {
   ...
   ...
Строка 68: Строка 68:
Вы также можете воспользоваться [https://www.espruino.com/Reference#l_NRF_connect NRF.connect()], задав в аргументе лишь возвращенную строку id, что может пригодиться, если вам надо подключиться к конкретному устройству.
Вы также можете воспользоваться [https://www.espruino.com/Reference#l_NRF_connect NRF.connect()], задав в аргументе лишь возвращенную строку id, что может пригодиться, если вам надо подключиться к конкретному устройству.


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


'''Примечание:''' Поле '''data''' содержит данные последнего присланного пакета. Но пакетов может быть больше одного. Чтобы извлечь данные каждого пакета по отдельности, используйте вместо findDevices() функцию [https://www.espruino.com/Reference#l_NRF_setScan NRF.setScan()].
{{Примечание1|Поле '''data''' содержит данные последнего присланного пакета. Но пакетов может быть больше одного. Чтобы извлечь данные каждого пакета по отдельности, используйте вместо findDevices() функцию [https://www.espruino.com/Reference#l_NRF_setScan NRF.setScan()].}}


== Примеры ==
== Примеры ==
Строка 78: Строка 78:
=См.также=
=См.также=


{{ads}}
 


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

Примечание

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

Примечание

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

Примеры

См.также

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