Przykład
list-menuOpinia?

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

Pokażemy, jak używać przycisków na pilocie zdalnego sterowania Bluetooth (podłączonym za pomocą klucza sprzętowego USB) do zarządzania funkcjami takimi jak tryb gotowości, regulacja głośności i sterowanie aparatem Cisco. Można opracować makro, które nasłuchuje odpowiednich zdarzeń i wykonuje odpowiadające im akcje za pomocą API urządzenia Cisco.

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

1

Zaloguj się do urządzenia Cisco na SSH. Potrzebny jest administrator lokalny .

2

Skonfiguruj urządzenie tak, aby zezwalało na korzystanie z pilota zdalnego sterowania USB innej firmy.

 xConfiguration Peripherals InputDevice Mode: On ** end OK  

 

Za pomocą tego polecenia można sprawdzić, czy konfiguracja jest włączona czy wyłączona:

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

Zarejestruj się, aby uzyskać informacje zwrotne, abyśmy zostali powiadomieni, gdy przyciski pilota zdalnego sterowania zostaną naciśnięte i zwolnione.

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

 

Za pomocą tego polecenia można sprawdzić, dla których sprzężeń zwrotnych urządzenie jest zarejestrowane:

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

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

Ta akcja generuje dwa zdarzenia: Naciśnięte i Zwolnione . Jeśli naciśniesz i przytrzymasz przycisk, zdarzenie Naciśnięto będzie widoczne do momentu jego zwolnienia. Następnie generowane jest zdarzenie Zwolnione .

Następujące zdarzenia są wyświetlane 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 nasłuchuje odpowiednich zdarzeń InputDevice i wykonuje powiązane działania przy użyciu API urządzenia.

  • Ożyw przyciski czuwania, zwiększania 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 długo wciśnięty jest przycisk. Po zwolnieniu przycisku ruch kamery ustaje. 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. Stan === 'wyłączony' ? fałsz: prawda; }); xapi.status.on('Standby', state => { standbyState = state. Stan === 'wyłączony' ? fałsz: prawda; }); xapi.event.on('UserInterface InputDevice Key Action', press => { if (press. Type == "Pressed") { switch (naciśnij. 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 (naciśnij. Type == "Released") { switch (naciśnij. 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 Decline'); break; case 'KEY_SLEEP': com(standbyState? "Dezaktywacja w trybie czuwania": "Aktywacja w trybie czuwania"); Przerwy; Wartość domyślna: przerwa; } } }); } init(); 
Czy ten artykuł był pomocny?
Czy ten artykuł był pomocny?