Eksempel
list-menuTilbakemelding?

I dette eksemplet vil vi vise deg hvordan du bruker tastene til en tredjeparts USB-inngangsenhet (i dette tilfellet en fjernkontroll) for å kontrollere visse funksjoner på en Cisco-enhet.

Vi viser deg hvordan du bruker knappene på en Bluetooth-fjernkontroll (koblet via en USB-dongle) for å administrere funksjoner som standby, volumjustering og kontroll av en Cisco-kameraenhet. Du kan utvikle en makro som lytter til relevante hendelser og utfører tilsvarende handlinger gjennom Cisco-enhetens API.

I det følgende eksemplet må du skrive inn teksten som er skrevet med normal skrift. Teksten i kursiv er svaret mottatt fra Cisco-enheten.

1

Logg på Cisco-enheten på SSH. Du trenger en lokal administrator bruker.

2

Konfigurer enheten slik at den tillater bruk av en tredjeparts USB-fjernkontroll.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Du kan sjekke om konfigurasjonen er På eller Av ved å bruke denne kommandoen:


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

Registrer deg for tilbakemelding, slik at vi blir varslet når fjernkontrollknappene trykkes og slippes.


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

 

Du kan sjekke hvilke tilbakemeldinger enheten er registrert for ved hjelp av denne kommandoen:


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

Trykk og slipp en knapp på fjernkontrollen for å kontrollere at tilbakemeldingsregistrering fungerer.

Denne handlingen genererer to hendelser: Pres set og Fri gjort. Hvis du trykker og holder inne en knapp, ser du hendelsen Pressed til du slipper knappen. Deretter genereres Rel eased-hendelsen.

Disse hendelsene utstedes når du trykker og slipper Enter-tasten:

 
                   *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 en makro som lytter etter de relevante InputDevice- hendelsene, og utfører de tilknyttede handlingene ved hjelp av API-en til enheten.

  • Gi liv til ventemodus-, volum opp- og volum ned-knappene. Når makroen ser en hendelse som inneholder KEY_VOLUMEUP, KEY_VOLUMEDOWN eller KEY_SLEEP, utfører den de relaterte kommandoene.

  • Opprett en kamerakontrollfunksjon for piltastene. Vi ønsker å fortsette å bevege kameraet så lenge knappen trykkes. Når knappen slippes, stopper kamerabevegelsen. Når makroen ser en hendelse som inneholder KEY_LEFT, KEY_RIGHT, KEY_UP eller KEY_DOWN, utfører den de relaterte kommandoene.


       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 denne artikkelen nyttig?
Var denne artikkelen nyttig?