Przykład
list-menuOpinia?

W tym przykładzie chcemy pokazać, jak używać kluczy zewnętrznego urządzenia wejściowego USB (w tym przypadku pilota) do sterowania niektórymi funkcjami na urządzeniu Cisco.

Pokażemy Ci, jak używać przycisków na pilocie Bluetooth (podłączonym za pomocą klucza USB) do zarządzania funkcjami takimi jak tryb gotowości, regulacja głośności i sterowanie urządzeniem kamery Cisco. Można opracować makro, które słucha istotnych zdarzeń i wykonuje odpowiednie działania za pośrednictwem interfejsu API urządzenia Cisco.

W poniższym przykładzie należy wprowadzić tekst napisany zwykłą czcionką. Tekst kursywą jest odpowiedzią otrzymaną z urządzenia Cisco.

1

Zaloguj się do urządzenia Cisco na SSH. Potrzebujesz lokalnego użytkownika administratora.

2

Skonfiguruj urządzenie, aby zezwolić na korzystanie z pilota zdalnego sterowania USB innej firmy.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Możesz sprawdzić, czy konfiguracja jest włączona lub wyłączona, używając tego polecenia:


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

Zarejestruj się, aby uzyskać informacje zwrotne, abyśmy otrzymywali powiadomienia o naciśnięciu i zwolnieniu przycisków pilota.


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

 

Możesz sprawdzić, do jakich informacji zwrotnych urządzenie jest zarejestrowane za pomocą tego polecenia:


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

Naciśnij i zwolnij przycisk na pilocie, aby sprawdzić, czy rejestracja informacji zwrotnej działa.

Ta akcja generuje dwa zdarzenia: Naci śnięte i U wolnione. Jeśli naciśniesz i przytrzymasz przycisk, zdarzenie Naci śnięte zostanie wyświetlone do momentu zwolnienia przycisku. Następnie generowane jest zdarzenie Released.

Te zdarzenia są wydawane po naciśnięciu i zwolnieniu klawisza 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

Napisz makro, które odsłuchuje odpowiednich zdarzeń InputDevice i wykonuje skojarzone działania za pomocą interfejsu API urządzenia.

  • Ożyw przyciski czuwania, zwiększania głośności i zmniejszania głośności. Gdy makro widzi zdarzenie zawierające KEY_VOLUMEUP, KEY_VOLUMEDOWN lub KEY_SLEEP, wykonuje powiązane polecenia.

  • Utwórz funkcję sterowania kamerą dla klawiszy strzałek. Chcemy poruszać kamerą tak długo, jak naciśnięty jest przycisk. Po zwolnieniu przycisku ruch kamery zatrzymuje się. Gdy makro widzi zdarzenie zawierające KEY_LEFT, KEY_RIGHT, KEY_UP lub KEY_DOWN, wykonuje powiązane polecenia.


       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(); 
     
Czy ten artykuł był pomocny?
Czy ten artykuł był pomocny?