Приклад
list-menuНадіслати відгук?

У цьому прикладі ми хочемо показати вам, як використовувати клавіші стороннього пристрою введення USB (в даному випадку пульта дистанційного керування) для управління певними функціями на пристрої Cisco.

Ми покажемо вам, як використовувати кнопки на пульті дистанційного керування Bluetooth (підключений через USB-ключ) для управління такими функціями, як режим очікування, регулювання гучності та управління пристроєм камери Cisco. Ви можете розробити макрос, який прослуховує відповідні події та виконує відповідні дії через API пристрою Cisco.

У наступному прикладі необхідно ввести текст, який написаний звичайним шрифтом. Текст курсивом - це відповідь, отримана від пристрою Cisco.

1

Увійдіть на пристрій Cisco на SSH. Вам потрібен локальний користувач адміністр атора.

2

Налаштуйте пристрій так, щоб дозволити використання стороннього пульта дистанційного керування USB.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Ви можете перевірити, чи є конфігурація Увімкнено чи Вимкнено, скориставшись цією командою:


        xConfiguration Peripherals InputDevice Mode 
        *c xConfiguration Peripherals InputDevice Mode: On ** end OK  
                  
3

Зареєструйтесь для зворотного зв'язку, щоб ми отримували сповіщення про натискання та відпуск кнопок пульта дистанційного керування.


       xFeedback Register /event/userinterface/inputdevice 
       ** end OK  
               

 

Перевірити, на які відгуки зареєстровано пристрій, можна за допомогою цієї команди:


        xFeedback list 
       /event/userinterface/inputdevice ** end OK  
                  
4

Натисніть і відпустіть кнопку на пульті дистанційного керування, щоб перевірити, чи працює реєстрація зворотного зв'язку.

Ця дія генерує дві події: натис нута та звільнена. Якщо ви натиснете і утримуєте кнопку, ви побачите подію Pres sed, поки не відпустите кнопку. Потім генер ується подія Release.

Ці події видаються при натисканні і відпуску клавіші Enter:

 
                   *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Pressed ** end *e UserInterface InputDevice Key Action Key: KEY_ENTER *e UserInterface InputDevice Key Action Code: 28 *e UserInterface InputDevice Key Action Type: Released ** end  
               
5

Напишіть макрос, який прослу ховує відповідні події InputDevice, і виконує пов'язані дії за допомогою API пристрою.

  • Оживіть кнопки очікування, збільшення гучності та зменшення гучності. Коли макрос бачить подію, що містить KEY_VOLUMEUP, KEY_VOLUMEDOWN або KEY_SLEEP, він виконує відповідні команди.

  • Створіть функцію управління камерою для клавіш зі стрілками. Ми хочемо продовжувати рухати камеру до тих пір, поки кнопка натиснута. Коли кнопка відпускається, рух камери припиняється. Коли макрос бачить подію, що містить KEY_LEFT, KEY_RIGHT, KEY_UP або KEY_DOWN, він виконує відповідні команди.


       const xapi = require('xapi'); function com(command, args='') { xapi.command(command, args); log(command + ' ' + JSON.stringify(args)); } function log(event) { console.log(event); } function notify(message) { xapi.command('UserInterface Message TextLine Display', { Text: message, duration: 3 }); } function cameraControl(motor, direction, cameraId='1') { com('Camera Ramp', { 'CameraId': cameraId, [motor]: direction }); } function init() { let standbyState; xapi.status.get('Standby').then((state) => {standbyState = state.State === 'Off' ? false : true; }); xapi.status.on('Standby', state => { standbyState = state.State === 'Off' ? false : true; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press.Type == "Pressed") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Left'); break; case "KEY_RIGHT": cameraControl('Pan', 'Right'); break; case "KEY_UP": cameraControl('Tilt', 'Up'); break; case "KEY_DOWN": cameraControl('Tilt', 'Down'); break; default: break; } } else if (press.Type == "Released") { switch (press.Key) { case "KEY_LEFT": cameraControl('Pan', 'Stop'); break; case "KEY_RIGHT": cameraControl('Pan', 'Stop'); break; case "KEY_UP": cameraControl('Tilt', 'Stop'); break; case "KEY_DOWN": cameraControl('Tilt', 'Stop'); break; case 'KEY_VOLUMEUP': com('Audio Volume Increase'); break; case 'KEY_VOLUMEDOWN': com('Audio Volume Decrease'); break; case 'KEY_SLEEP': com(standbyState ? 'Standby Deactivate' : 'Standby Activate'); break; default: break; } } }); } init(); 
     
Чи була ця стаття корисною?
Чи була ця стаття корисною?