当前位置: 首页 > 面试题库 >

更新USB设备列表

宣望
2023-03-14
问题内容

我想创建模块自动更新USB设备列表(不仅是大容量存储)。现在它的工作非常不礼貌-
它具有附加线程,该线程在1秒钟后更新了设备列表。但是也许您知道如何处理一些插件事件,这些事件会生成OS(例如Windows
XP及更高版本),或者通过另一种方式简化此过程。感谢您的时间!


问题答案:

这个问题似乎是一半的设计,一半的实现。似乎您最担心要为Java
USB服务(例如jUSB)找到某种方式来服务系统中的热插拔事件,从而使您可以通过控制反转来调用一个事件,而不是运行一个线程来热情地和迭代地轮询系统中的线程。背景。

您所寻求的支持早在2005年就以JSR-80的形式实现,并且javax- usb在SourceForge上所有超出其商业支持的大型项目中似乎都可以继续使用。请注意,在他们的玩具示例中(javax-usb- example/src/ShowTopology.java),他们的 首选 模型仍然基于轮询。

但是,并不是所有的东西都丢失了!在的属性文件中javax.usb,我们发现:

#如果应使用轮询而不是等待热插拔通知。

#某些内核版本存在错误,并且只有在唤醒等待设备文件的线程之后几秒钟才更新设备节点。如果在中等负载到重负载的系统上没有出现热插拔事件,请使用轮询。

#注意,由于新的(buggy?)内核行为破坏了javax.usb,因此默认为true!

#如果您知道内核没有损坏,可以将其设置为false。

#com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling = true

在中javax-usb/src/javax/usb/event/UsbServicesListener.java,我们看到了用于设置USB事件侦听器的模型,当设备与系统连接或分离时,您可以继续使用该模型。外部没有提供有关此方法是否可行的文档
但是文档本身似乎已经有8年的历史了。

因此,可以合理地假设,尽管 理论上
存在这种支持,但它是滞后的,陈旧的,并且迫切需要社区进行更新。SO上的这个好的社区可以帮助解决这类问题,因此,我将直接指向项目本身作为结束。

目前,在存在增强的硬件或热插拔支持之前,轮询仍然是最好的解决方案。

(的附加参考实现javax-usb



 类似资料:
  • 简介 USB 即 Universal Serial Bus 是一种支持热插拔的通用串行总线,在 USB 体系中又分为 USB Host 和 USB Device。本文将基于 stm32l475-atk-pandora 开发板,讲解基于 RT-Thread Studio 开发 USB Device 驱动。 USB Device 设备驱动的开发可总结为如下几个步骤: 新建 RT-Thread 完整版项

  • 13.1. 简介 通用串行总线(USB)是将设备连接到个人计算机的一种新方法。总线 结构突出了双向通信的特色,并且其开发充分考虑到了设备正逐渐智能化 和需要与host进行更多交互的现实。对USB的支持包含在当前所有芯片中, 因此在新近制造的PC中都可用。苹果(Apple)引入仅带USB的iMac对硬件 制造商生产他们USB版本的设备是一个很大的激励。未来的PC规范指定 PC上的所有老连接器应当由一

  • 通过usb接口可以与USB设备进行交互,这能让Chrome应用作为USB设备的驱动程序。要使用usb接口需要在Manifest中声明usb权限: "permissions": [ "usb" ] 本章内容参考自https://crxdoc-zh.appspot.com/apps/usb。

  • python 怎么实现监控电脑是否有usb或其他可移动设备插入,最好也能检测手机插入。 用来在办公室里防止usb设备插入内部电脑里、 试过是做了一个pyqt的程序,然后开机后读取当前盘符,并保存下来,如果出现新的盘符就报错然后提醒用户拔掉,但是这样显然是有bug。 国内暂时没有特别靠谱的解决方法。

  • 问题内容: 我正在尝试获取Ubuntu 10.10中当前插入的USB设备的列表,并监视发生的更改,例如使用UDev和D-BUS插入或拔出的设备。我对使用D- BUS进行编程非常陌生。我看到一个示例:Linux:如何检测到USB键盘是插拔的,只有一个使用HAL并且我知道HAL已弃用。我发现了一些有效的代码,对其进行了一些修改,仅对仅存储设备(例如USB棒,媒体播放器或cd- rom设备)不起作用。我

  • 我正在尝试从连接到主机模式下的Android手机的USB设备中获取一些数据。我可以发送数据到它,但读取失败。 我一直从方法获得,它指示某种错误,它总是超时。也许问题来自于连接配置,我试了几次(读作:试错),没有一次奏效,令人惊讶的是,我不需要任何配置来发送数据到设备。 编辑 还必须注意的是,我使用的电缆是micro-USB到micro-USB的,它只能以一种方式工作,即只有当插头A连接到电话和插头