usb设备的检测问题

2024-04-28 21:49:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要检测一个usb设备,当它被插拔时,我用dbus编写了一个python程序。在

但很奇怪的是,当它被插上或拔下时,它至少会被安装三次

监视器代码如下:

            device = dbus.Interface(self.bus.get_object("org.freedesktop.Hal", udi),
                                    "org.freedesktop.Hal.Device")

            self.notify_message(device.GetProperty("info.udi"))

当我试图插入一个usb设备(如键盘)时,我们会捕捉到输出

^{pr2}$

所以,每次插入或拔下时,通知显示三次 如何只显示一次通知?在


Tags: 代码orgself程序插拔getdevicehal
1条回答
网友
1楼 · 发布于 2024-04-28 21:49:24

我对dbus不熟悉,但是看看您得到的设备名称:

usb_device_413c_2003_noserial
usb_device_413c_2003_noserial_if0
usb_device_413c_2003_noserial_if0_logicaldev_input

第一个设备可能代表USB设备作为一个整体。第二设备很可能表示所述设备的接口0。第三个设备可能表示接口0的端点或其他功能,这些功能可能在设备描述符中指定,也可能不指定。在

即使只插入一个物理设备,您也可以得到三个不同的逻辑设备。对于实现复合USB设备的人来说,这类事情很重要。在

不过,为了回答这个问题:如果您只想得到一次通知,那么在您的通知处理程序函数中,您应该通过查看设备名称字符串并决定是否关心该事件来过滤掉您不关心的通知。例如,您可能决定不关心名称中带有if0的设备,因此您的伪代码将是:

^{pr2}$

相关问题 更多 >