在此文章中
示例
将第三方 USB 输入设备与 Board、Desk 和 Room 系列配合使用
list-menu在此文章中
list-menu反馈?

您可以使用第三方 USB 外围设备来控制设备上的某些功能,例如 USB 键盘或带有 USB 加密狗的 Bluetooth® 遥控器。

此功能旨在 补充 触摸控制器或触摸用户界面的功能。 它并不意味着取代 它们。

应用示例:

  • 在教室和讲座期间,可以使用小型遥控器将设备从待机模式唤醒。使用遥控器选择要呈现的输入源也可能很方便。

  • 在不允许使用触摸控制器的情况下控制摄像头视图(平移、倾斜和缩放)。 例如,在医院的手术室里。

功能概述

在 USB 输入设备上按下按钮时,它会触发 Cisco 设备的 API 中的操作。 可以设置来自第三方的宏 或外部控制设备来检测这些操作并做出相应的反应。 此功能类似于“室内控制”按钮的行为方式。 此外,通过 Webhook 或直接在 SSH 会话中监视这些操作也是可行的。

未提供预先存在的操作库供您选择。 您需要定义和建立响应事件应发生的特定操作。 例如:

  • 在按下音量调高键时增加 Cisco 设备的音量。

  • PUT 按下睡眠键时 Cisco 设备处于待机模式。

配置、事件和状态

本文中提到的配置和状态可从设备的本地 Web 界面和 API 有空。 阅读设备配置一 ,了解如何访问 Web 界面和使用 API。

打开设备的 Web 界面后,单击 设置 。 在配置下 ,将外围设备 > 输入设备模式 更改为 缺省情况下禁用对第三方 USB 输入设备的支持。

按下并松开按钮会生成“ 按下 ”和 “已释放 ”事件:

 *e 用户界面输入设备键操作键:<键的名称> *e 用户界面输入设备键操作代码:键的 <ID> *e 用户界面输入设备键操作类型:按 ** 结束 *e 用户界面输入设备键操作键:<键的名称> *e 用户界面输入设备键操作代码:键的 <ID> *e 用户界面输入设备键操作类型:已发布 ** 结束 

若要侦听事件,必须注册来自 InputDevice 事件的反馈:

 x 反馈寄存器 /event/UserInterface/InputDevice ** 结束 

当 Cisco 设备检测到第三方外设时,它将列在“状态 ”下和“外围设备 > 已连接设备 ”中 。 第三方设备可能会被报告为多个设备。

更多信息

有关使用第三方输入设备的更多信息,请参阅 自定义指南 。 选择最新版本。

Cisco 支持(TAC)不支持调试第三方代码,包括宏。 如果您需要有关宏和第三方代码的帮助,请查看 用于协作设备的 Cisco RoomOS。 查看 此页面 以获取宏和扩展的更多示例。

示例

在此示例中,我们想向您展示如何使用第三方 USB 输入设备(在本例中为遥控器)的键来控制 Cisco 设备上的某些功能。

我们将向您展示如何使用 Bluetooth 遥控器(通过 USB 加密狗连接)上的按钮来管理待机、音量调整和 Cisco 摄像头设备控制等功能。 您可以开发一个宏,该宏侦听相关事件并通过 Cisco 设备的 API 执行相应的操作。

在下面的示例中,您必须输入以普通字体书写的文本。 斜体文本是从 Cisco 设备收到的响应。

1

在 SSH 上登录 Cisco 设备。 您需要本地 管理员 用户。

2

将设备配置为允许使用第三方 USB 远程控制。

 x 配置外设输入设备模式:开 **端确定  

您可以使用以下命令检查配置是“打开”还是“关闭”:

 x 配置外设输入设备模式  *c x 配置外设输入设备模式:打开 ** 端确定  
3

注册以获取反馈,以便在按下和松开遥控器按钮时收到通知。

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

您可以使用以下命令检查设备注册了哪些反馈:

 x 反馈列表 /事件/用户界面/输入设备 ** 结束确定  
4

按下并松开遥控器上的按钮以检查反馈注册是否正常工作。

此操作将生成两个事件:“ 已按下 ”和 “已发布”。 如果按住某个按钮,则会看到 Pressed 事件,直到您松开该按钮。 然后生成已发布 事件。

按下并释放 Enter 键时会引发以下事件:

  *e 用户界面输入设备键操作键:KEY_ENTER *e 用户界面输入设备键操作代码:28 *e 用户界面输入设备键操作类型:按 ** 结束 *e 用户界面输入设备键操作键:KEY_ENTER *e 用户界面输入设备键操作代码:28 *e 用户界面输入设备键操作类型:已发布 ** 结束  
5

编写一个宏,用于侦听相关的 InputDevice 事件,并使用设备的 API 执行关联的操作。

  • 使待机、调高音量和调低音量按钮栩栩如生。 当宏看到包含 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.状态 ===“关闭”?假:真;});xapi.status.on('Standby',state => { standbyState = state.状态 ===“关闭”?假:真;});xapi.event.on('UserInterface InputDevice Key Action',press => { if(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; } }否则如果(按。类型 ==“释放”){ 开关(按.Key){ case“KEY_LEFT”:cameraControl('Pan','Stop'); break; case“KEY_RIGHT”:cameraControl('平移','Stop'); break; case“KEY_UP”:cameraControl('Tilt','Stop'); break; case“KEY_DOWN”:cameraControl('Tilt','Stop'); break; case 'KEY_VOLUMEUP':com('Audio Volume Rise'); break; case 'KEY_VOLUMEDOWN':com('Audio Volume Reduction'); break; case 'KEY_SLEEP':com(standbyState? “待机停用”:“待机激活”);打破;默认值:中断;} } });} init(); 
这篇文章对您有帮助吗?
这篇文章对您有帮助吗?