Vă arătăm cum să utilizați tastele unei telecomenzi Bluetooth (cu un dongle USB) pentru a controla funcția de așteptare, pentru a crește și a reduce volumul și pentru a controla camera unui dispozitiv de cameră sau de birou. Creăm o macrocomandă care ascultă evenimentele relevante și efectuează acțiunile asociate folosind API-ul camerei sau al dispozitivului de birou.

Caracteristica dispozitiv de intrare USB terță parte este descrisă în acest articol .

În exemplul următor, trebuie să introduceți textul care este scris cu font normal. Textul cu caractere cursive este răspunsul primit de la cameră sau de la dispozitivul de birou.

1

Conectați-vă la cameră sau la dispozitivul de birou de pe SSH. Aveți nevoie de un utilizator de administrator local .

2

Configurați dispozitivul pentru a permite utilizarea unei telecomenzi USB de la terți.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

Puteți verifica dacă configurația este activată sau dezactivată utilizând această comandă:


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

Înregistrați-vă pentru feedback, astfel încât să fim anunțați atunci când butoanele de control de la distanță sunt apăsate și eliberate.


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

 

Puteți verifica ce feedback-uri este înregistrat dispozitivul pentru utilizarea acestei comenzi:


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

Apăsați și eliberați un buton de pe telecomandă pentru a verifica dacă înregistrarea feedback-ului funcționează.

Această acțiune generează două evenimente: Presat și eliberat. Dacă apăsați și țineți apăsat un buton, vedeți evenimentul apăsat până când eliberați butonul. Apoi este generat evenimentul Lansat .

Aceste evenimente sunt emise la apăsarea și eliberarea tastei 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

Scrieți o macrocomandă care ascultă evenimentele relevante InputDevice și efectuează acțiunile asociate utilizând API-ul dispozitivului.

  • Aduceți la viață butoanele de așteptare, de creștere a volumului și de reducere a volumului. Când macrocomanda vede un eveniment care conține volumeup cheie_, volumedown cheie_sau cheie_sleep, se execută comenzile asociate.

  • Creați o funcție de control a camerei pentru tastele săgeată. Vrem să continuăm să mișcăm camera atât timp cât butonul este apăsat. Când butonul este lansat, mișcarea camerei se oprește. Când macrocomanda vede un eveniment care conține TASTA_stânga, TASTA_dreapta, TASTA sus_sau TASTA_în jos, se execută comenzile asociate.


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