مثال
list-menuهل لديك ملاحظات؟

في هذا المثال، نريد أن نوضح لك كيفية استخدام مفاتيح جهاز إدخال USB تابع لجهة خارجية (في هذه الحالة جهاز تحكم عن بعد) للتحكم في وظائف معينة على جهاز Cisco.

نوضح لك كيفية استخدام الأزرار الموجودة على جهاز تحكم عن بعد يعمل بتقنية Bluetooth (متصل من خلال دونجل USB) لإدارة وظائف مثل الاستعداد وتعديل مستوى الصوت والتحكم في جهاز كاميرا Cisco. يمكنك تطوير ماكرو يستمع إلى الأحداث ذات الصلة وينفذ الإجراءات المقابلة من خلال واجهة برمجة التطبيقات الخاصة بجهاز Cisco.

في المثال التالي، يجب إدخال النص المكتوب بخط عادي. يمثل النص المكتوب بخط مائل الاستجابة المتلقاة من جهاز Cisco.

1

قم بتسجيل الدخول إلى جهاز Cisco على SSH. أنت بحاجة إلى مستخدم مسؤول محلي.

2

قم بتكوين الجهاز للسماح باستخدام جهاز تحكم عن بعد USB تابع لجهة خارجية.


       xConfiguration Peripherals InputDevice Mode: On 
      ** end OK  
               

 

يمكنك التحقق من تشغيل التكوين أو إيقاف تشغيله باستخدام هذا الأمر:


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

قم بالتسجيل للحصول على تعليقات، حتى يتم إعلامنا عند الضغط على أزرار التحكم عن بعد وإصدارها.


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

 

يمكنك التحقق من التعليقات التي تم تسجيل الجهاز لاستخدامها باستخدام هذا الأمر:


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

اضغط على زر في جهاز التحكم عن بُعد وحرره للتحقق من أن تسجيل التعليقات يعمل.

يؤدي هذا الإجراء إلى إنشاء حدثين: تم الضغط عليه وإصداره. إذا قمت بالضغط مع الاستمرار على أحد الأزرار، فسترى الحدث المضغوط حتى تقوم بتحرير الزر. ثم يتم إنشاء الحدث الذي تم إصداره.

يتم إصدار هذه الأحداث عند الضغط على مفتاح 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

اكتب ماكرو يستمع إلى أحداث InputDevice ذات الصلة، وينفذ الإجراءات المرتبطة باستخدام واجهة برمجة التطبيقات الخاصة بالجهاز.

  • قم بتنشيط أزرار الاستعداد ورفع مستوى الصوت وخفض مستوى الصوت. عندما يرى الماكرو حدثًا يحتوي على KEY_VOLUMEUP أو KEY_VOLUMEDOWN أو KEY_SLEEP، فإنه ينفذ الأوامر ذات الصلة.

  • قم بإنشاء وظيفة التحكم بالكاميرا لمفاتيح الأسهم. نريد الاستمرار في تحريك الكاميرا طالما تم الضغط على الزر. عند تحرير الزر، تتوقف حركة الكاميرا. عندما يرى الماكرو حدثًا يحتوي على KEY_LEFT أو KEY_RIGHT أو KEY_UP أو KEY_DOWN، فإنه ينفذ الأوامر ذات الصلة.


       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(); 
     
هل كان هذا المقال مفيدًا؟
هل كان هذا المقال مفيدًا؟