Arduino:Библиотеки/CurieBLE/Класс BLEPeripheral/setEventHandler(): различия между версиями

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


<references />
<references />
{{Навигационная таблица/Портал/Arduino}}





Текущая версия от 12:20, 8 июля 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Функция setEventHandler()[1]

Задает функцию обратного вызова (callback), которую нужно вызвать при наступлении указанного события (event).

Синтаксис

yourBlePeripheralName.setEventHandler(event, callback)

Параметры

event  событие, при наступлении которого нужно вызвать функцию; тут могут быть указаны следующие значения: BLEConnected, BLEDisconnected и BLEPeripheralEventLast
callback  название функции, которую нужно вызвать при наступлении события

Что возвращает

Ничего.

Пример

/*
   Правообладатель – Intel Corporation (2015).  Все права защищены.

   Эта библиотека является бесплатной; ее можно распространять 
   и/или модифицировать согласно условиям Стандартной общественной
   лицензии ограниченного применения GNU (т.к. она выпущена Фондом
   свободного ПО) – либо версии 2.1 этой лицензии, либо более поздней
   версии (на ваш выбор). 

   Эта библиотека распространяется в надежде на то, что будет 
   полезна кому-либо, но БЕЗО ВСЯКИХ ГАРАНТИЙ – даже без гарантий на 
   коммерческое качество и пригодность применения для конкретных 
   целей. Более подробно читайте в Стандартной общественной лицензии
   ограниченного применения GNU. 

   Вы должны получить копию Стандартной общественной лицензии
   ограниченного применения вместе с этой библиотекой. Если не
   получили, напишите в Фонд бесплатного ПО на адрес: Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,    
   MA  02110-1301  USA 
*/


#include <CurieBLE.h>

const int ledPin = 13; // задаем контакт для встроенного светодиода 
BLEPeripheral blePeripheral; // создаем экземпляр для периферийного устройства 

BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // создаем сервис

// создаем характеристику для переключателя, а также разрешаем 
// удаленному устройству делать на ней операции записи и считывания: 
BLECharCharacteristic switchChar("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT); // делаем контакт для 13-ого светодиода выходным 

  // задаем локальное название для периферийного устройства: 
  blePeripheral.setLocalName("LEDCB");
  // задаем UUID для сервиса, который рекламирует это периферийное устройство: 
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // добавляем сервис и характеристику:
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchChar);

  // присваиваем периферийному устройству обработчики событий для подключения и отключения:
  blePeripheral.setEventHandler(BLEConnected, blePeripheralConnectHandler);
  blePeripheral.setEventHandler(BLEDisconnected, blePeripheralDisconnectHandler);

  // присваиваем характеристике обработчик события для записи нового значения:
  switchChar.setEventHandler(BLEWritten, switchCharacteristicWritten);
// задаем начальное значение для характеристики:
  switchChar.setValue(0);

  // запускаем «рекламу» сервиса:
  blePeripheral.begin();
  Serial.println(("Bluetooth device active, waiting for connections..."));  //  "Bluetooth-устройство активно, ждем подключений..."
}

void loop() {
  // запускаем опрос периферийного устройства:
  blePeripheral.poll();
}

void blePeripheralConnectHandler(BLECentral& central) {
  // обработчик события «подключение центрального устройства» 
  Serial.print("Connected event, central: ");  //  "Событие «подключение центрального устройства», адрес: "
  Serial.println(central.address());
}

void blePeripheralDisconnectHandler(BLECentral& central) {
  // обработчик события «отключение центрального устройства»
  Serial.print("Disconnected event, central: ");  //  "Событие «отключение центрального устройства», адрес: "
  Serial.println(central.address());
}

void switchCharacteristicWritten(BLECentral& central, BLECharacteristic& characteristic) {
  // центральное устройство записывает в характеристику новое значение, обновляя состояние светодиода 
  Serial.print("Characteristic event, written: ");  //  "Событие «запись в характеристику», текущий статус: "

  if (switchChar.value()) {
    Serial.println("LED on");  //  "Светодиод включен"
    digitalWrite(ledPin, HIGH);
  } else {
    Serial.println("LED off");  //  "Светодиод выключен"
    digitalWrite(ledPin, LOW);
  }
}

См.также

  1. begin()
  2. end()
  3. setAdvertisedServiceUuid()
  4. setLocalName()
  5. setDeviceName()
  6. setAppearance()
  7. setEventHandler()
  8. addAttribute()
  9. disconnect()
  10. central()
  11. connected()

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