Megmutatjuk, hogyan kell használni a(z USB-hardverkulcsos) Bluetooth távirányító gombjait a készenléti funkció vezérléséhez, a hangerő növeléséhez és csökkentéséhez, valamint a Room vagy Desk eszköz kamerájának vezérléséhez. Olyan makrót hozunk létre, amely figyeli a releváns eseményeket, és a Room vagy Desk eszköz API-ja segítségével végzi el a hozzárendelt műveleteket.

A harmadik fél gyártótól származó USB beviteli eszköz funkcióját ez a cikk ismerteti.

Az alábbi példában a normál betűtípussal írt szöveget kell megadnia. A dőlt betűs szöveg a Room vagy Desk eszköztől kapott válasz.

1

Jelentkezzen be a Room vagy Desk eszközbe SSH-n. Helyi rendszergazda felhasználónak kell lennie.

2

Úgy állítsa be az eszközt, hogy az engedélyezze a harmadik fél gyártótól származó USB távirányító használatát.

xConfiguration Peripherals InputDevice Mode: On
** end

OK

               

 

A következő paranccsal ellenőrizheti, hogy a konfiguráció be vagy ki van-e kapcsolva:

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

OK

                  
3

Regisztráljon visszajelzésre, így értesítést kapunk, amikor a távirányító gombjait megnyomja, illetve felengedi.

xFeedback Register /event/userinterface/inputdevice
** end

OK

               

 

A következő paranccsal ellenőrizheti, hogy az eszköz milyen visszajelzésre regisztrált:

xFeedback list
/event/userinterface/inputdevice
** end

OK

                  
4

Nyomja meg és engedje fel a távirányító egy gombját annak ellenőrzéséhez, hogy működik-e a visszajelzésre való regisztráció.

Ez a művelet két eseményt hoz létre: Megnyomott és Felengedett. Ha megnyom és nyomva tart egy gombot, akkor addig fogja látni a Megnyomott eseményt, amíg fel nem engedi a gombot. Ekkor bekövetkezik a Felengedett esemény.

A következő események az Enter billentyű megnyomásakor és felengedésekor kerülnek kiadásra:

 
                  
*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

Írjon olyan makrót, amely figyeli a releváns InputDevice (beviteli eszköz) eseményeit, és az eszköz API-ja segítségével végzi el a hozzárendelt műveleteket.

  • Keltse életre a készenléti, a hangerő fel és hangerő le gombokat! Amikor a makró KEY_VOLUMEUP, KEY_VOLUMEDOWN vagy KEY_SLEEP értéket tartalmazó eseményt lát, végrehajtja a kapcsolódó parancsokat.

  • Készítsen kameravezérlő funkciót a nyíl gombokhoz! Azt akarjuk, hogy a kamera addig mozogjon, amíg a gomb le van nyomva. Amikor a gombot felengedik, leáll a kamera mozgása. Amikor a makró KEY_LEFT, KEY_RIGHT, KEY_UP vagy KEY_DOWN értéket tartalmazó eseményt lát, végrehajtja a kapcsolódó parancsokat.

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();