java - 如何从相机获取按钮按下事件
问题描述
我有一个牙科相机,当按下相机按钮时,我试图让窗户按下空间
我安装了 OEM 软件和驱动程序,它运行良好,可以在按下相机按钮时获取提要并制作快照。我需要为提要和快照使用另一个软件,该软件获取提要但对相机按钮没有反应,它只对空格键按下(oem 驱动程序的一部分)作出反应,所以我解决这个问题的方法是设备按产品 ID 并监听按钮按下事件并重新映射它的空间按下。我几乎被困在这一点上。如何收听来自我拥有的设备的事件?
public static Device findDCam(){
// Create the libusb context
Context context = new Context();
// Initialize the libusb context
int result = LibUsb.init(context);
if (result < 0)
{
throw new LibUsbException("Unable to initialize libusb", result);
}
// Read the USB device list
DeviceList list = new DeviceList();
result = LibUsb.getDeviceList(context, list);
if (result < 0)
{
throw new LibUsbException("Unable to get device list", result);
}
try
{
// Iterate over all devices and list them
for (Device device: list)
{
DeviceDescriptor descriptor = new DeviceDescriptor();
result = LibUsb.getDeviceDescriptor(device, descriptor);
if (result < 0)
{
throw new LibUsbException(
"Unable to read device descriptor", result);
}
if(descriptor.idProduct()== -3810){
System.out.println("D cam found");
return device;
}
}
}
finally
{
// Ensure the allocated device list is freed
LibUsb.freeDeviceList(list, true);
}
// Deinitialize the libusb context
LibUsb.exit(context);
return null;
}
我还认为使用 usb4java 可能是不可能的,因为据我所知,如果我想在 USB 端口上收听,我需要从驱动程序那里获得控制权,然后它就没有意义了。也许我全都错了,我应该改用驱动程序?或者也许有一个应用程序可以从特定设备读取按钮按下并重新映射它?
解决方案
如果相机有标准驱动程序,这应该通过这个视频捕获 SDK工作。要快速测试它,请运行包中包含的演示可执行文件,在列表中选择摄像头,选中“网络摄像头快照按钮”复选框并启动摄像头。然后按下相机按钮来测试快照。
推荐阅读
- qt - QT:发布中的渲染与调试不同
- java - 根据每个字符串的子字符串对字符串 ArrayList 的一半进行排序
- angular - Angular - Rxjs Observable - 点击事件实现
- python - 正则表达式 - 获取数据直到第一次出现两个不同的序列
- sql - Oracle Sql:仅按 id 和日期选择最新记录
- r - 如何在 R 中快速调用多个具有相同名称的数据帧/向量,除了结尾
- javascript - HTML 脚本标记功能未在内联 onchange 属性中读取
- java - 命名查询中的字符串日期生成 ClassCastException
- javascript - 风格拖鬼元素
- php - 如何使用 symfony 表单创建微调器字段?