Exempel
list-menuHar du feedback?

I det här exemplet vill vi visa dig hur du använder tangenterna på en USB-ingångsenhet från tredje part (i detta fall en fjärrkontroll) för att styra vissa funktioner på en Cisco-enhet.

Vi visar dig hur du använder knapparna på en Bluetooth-fjärrkontroll (ansluten via en USB-dongel) för att hantera funktioner som vänteläge, volymjustering och kontroll av en Cisco-kameraenhet. Du kan utveckla ett makro som lyssnar på relevanta händelser och utför motsvarande åtgärder via Cisco-enhetens API.

I följande exempel måste du ange texten som är skriven i normalt teckensnitt. Texten i kursiv stil är svaret från Cisco-enheten.

1

Logga in på Cisco-enheten på SSH. Du behöver en lokal administratörsan vändare.

2

Konfigurera enheten så att den tillåter användning av en USB-fjärrkontroll från tredje part.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Du kan kontrollera om konfigurationen är På eller Av med det här kommandot:


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

Registrera dig för feedback, så att vi får ett meddelande när fjärrkontrollknapparna trycks in och släpps.


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

 

Du kan kontrollera vilka återkopplingar enheten är registrerad för med det här kommandot:


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

Tryck och släpp en knapp på fjärrkontrollen för att kontrollera att feedbackregistrering fungerar.

Den här åtgärden genererar två händelser: Pres sad och S läppt. Om du håller ned en knapp visas händelsen Pres sed tills du släpper knappen. Sedan genereras Rel eased-händelsen.

Dessa händelser utfärdas när du trycker på och släpper Enter-tangenten:

 
                   *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

Skriv ett makro som lyssnar på relevanta InputDev ice-händelser och utför de tillhörande åtgärderna med hjälp av enhetens API.

  • Få liv i vänteläge-, volym upp- och volymnedsknapparna. När makrot ser en händelse som innehåller KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP körs relaterade kommandon.

  • Skapa en kamerakontrollfunktion för piltangenterna. Vi vill fortsätta flytta kameran så länge knappen trycks in. När knappen släpps stannar kamerans rörelse. När makrot ser en händelse som innehåller KEY_LEFT, KEY_RIGHT, KEY_UP eller KEY_DOWN körs relaterade kommandon.


       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(); 
     
Var den här artikeln användbar?
Var den här artikeln användbar?