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

USB设备UDev和D-BUS

巫马承德
2023-03-14
问题内容

我正在尝试获取Ubuntu 10.10中当前插入的USB设备的列表,并监视发生的更改,例如使用UDev和D-BUS插入或拔出的设备。我对使用D-
BUS进行编程非常陌生。我看到一个示例:Linux:如何检测到USB键盘是插拔的,只有一个使用HAL并且我知道HAL已弃用。我发现了一些有效的代码,对其进行了一些修改,仅对仅存储设备(例如USB棒,媒体播放器或cd-
rom设备)不起作用。我希望鼠标,键盘,usb摄像头能为插入USB的任何东西充电,我希望程序对此有所了解。这基本上是我所拥有的(http://moserei.de/2010/01/08/accessing-
devicekit-with-dbus-and-python.html):

import dbus
import gobject
from dbus.mainloop.glib import DBusGMainLoop

def device_added_callback(device):
    print 'Device %s was added' % (device)

def device_changed_callback(device):
    print 'Device %s was changed' % (device)

#must be done before connecting to DBus
DBusGMainLoop(set_as_default=True)

bus = dbus.SystemBus()

proxy = bus.get_object("org.freedesktop.UDisks", 
                       "/org/freedesktop/UDisks")
iface = dbus.Interface(proxy, "org.freedesktop.UDisks.Device")

devices = iface.get_dbus_method('EnumerateDevices')()

print '%s' % (devices)

#addes two signal listeners
iface.connect_to_signal('DeviceAdded', device_added_callback)
iface.connect_to_signal('DeviceChanged', device_changed_callback)

#start the main loop
mainloop = gobject.MainLoop()
mainloop.run()

任何帮助将不胜感激。预先感谢您,Calota Romeo


问题答案:

该udisks d-巴士服务,很明显,仅报告磁盘。

只需直接监视udev(通过libudev,通过pyudev)。

import pyudev
context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
observer = pyudev.pygtk.GUDevMonitorObserver(monitor)
observer.connect('device-added', device_added_callback)
observer.connect('device-changed', device_changed_callback)
monitor.enable_receiving()
mainloop = gobject.MainLoop()
mainloop.run()


 类似资料:
  • 简介 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。 国内暂时没有特别靠谱的解决方法。

  • 问题内容: 我想创建模块自动更新USB设备列表(不仅是大容量存储)。现在它的工作非常不礼貌- 它具有附加线程,该线程在1秒钟后更新了设备列表。但是也许您知道如何处理一些插件事件,这些事件会生成OS(例如Windows XP及更高版本),或者通过另一种方式简化此过程。感谢您的时间! 问题答案: 这个问题似乎是一半的设计,一半的实现。似乎您最担心要为Java USB服务(例如jUSB)找到某种方式来服

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