Пример
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

Натиснете и освободете бутон на дистанционното управление, за да проверите дали регистрацията на обратна връзка работи.

Това действие генерира две събития: Нат иснато и освободено. Ако натиснете и задържите бутон, ще видите събитието Нат иснато, докато не освободите бутона. След това се генери ра осв ободеното събитие.

Тези събития се издават при натискане и освобождаване на клавиша 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(); 
     
Беше ли полезна тази статия?
Беше ли полезна тази статия?