Exemplu
list-menuFeedback?

În acest exemplu, dorim să vă arătăm cum să utilizați tastele unui dispozitiv de intrare USB terță parte (în acest caz o telecomandă) pentru a controla anumite funcții pe un dispozitiv Cisco.

Vă arătăm cum să utilizați butoanele de pe o telecomandă Bluetooth (conectată printr-un dongle USB) pentru a gestiona funcții precum standby, reglarea volumului și controlul unui dispozitiv de cameră Cisco. Puteți dezvolta o macrocomandă care ascultă evenimentele relevante și execută acțiunile corespunzătoare prin API-ul dispozitivului Cisco.

În exemplul următor, trebuie să introduceți textul care este scris cu font normal. Textul cu caractere cursive este răspunsul primit de la dispozitivul Cisco.

1

Conectați-vă la dispozitivul Cisco pe SSH. Aveți nevoie de un utilizator local de administrare.

2

Configurați dispozitivul pentru a permite utilizarea unei telecomenzi USB terță parte.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Puteți verifica dacă configurația este Activat sau Dezactivat utilizând această comandă:


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

Înregistrați-vă pentru feedback, astfel încât să fim anunțați când butoanele telecomenzii sunt apăsate și eliberate.


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

 

Puteți verifica ce feedback-uri este înregistrat dispozitivul folosind această comandă:


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

Apăsați și eliberați un buton de pe telecomandă pentru a verifica dacă înregistrarea feedback-ului funcționează.

Această acțiune generează două evenimente: apăsat și eli berat. Dacă apăsați și țineți apăsat un buton, veți vedea evenimentul Apăsat până când eliberați butonul. Apoi este gener at evenimentul Lansat.

Aceste evenimente sunt emise la apăsarea și eliberarea tastei 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

Scrieți o macrocomandă care ascultă evenimentele relevante InputDev ice și efectuează acțiunile asociate utilizând API-ul dispozitivului.

  • Aduceți viață butoanelor de așteptare, de creștere a volumului și de reducere a volumului. Când macrocomanda vede un eveniment care conține KEY_VOLUMEUP, KEY_VOLUMEDOWN sau KEY_SLEEP, execută comenzile aferente.

  • Creați o funcție de control al camerei pentru tastele săgeată. Vrem să continuăm să mișcăm camera atâta timp cât este apăsat butonul. Când butonul este eliberat, mișcarea camerei se oprește. Când macrocomanda vede un eveniment care conține KEY_LEFT, KEY_RIGHT, KEY_UP sau KEY_DOWN, execută comenzile aferente.


       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(); 
     
A fost util acest articol?
A fost util acest articol?