python USB设备识别

ktca8awb  于 2023-02-21  发布在  Python
关注(0)|答案(4)|浏览(238)

我在ubuntu9.04上使用python假设我有两个usb设备连接到一台PC上.我怎样才能在python代码中识别这些设备......例如
如果usb端口id == A,则将数据写入设备1如果usb端口id == B,则将数据写入设备2
任何想法...

8xiog9wr

8xiog9wr1#

您是否尝试过pyUsb?安装使用:

pip install pyusb

下面是您可以执行的操作的一个片段:

import usb
busses = usb.busses()
for bus in busses:
    devices = bus.devices
    for dev in devices:
        print("Device:", dev.filename)
        print("  idVendor: %d (0x%04x)" % (dev.idVendor, dev.idVendor))
        print("  idProduct: %d (0x%04x)" % (dev.idProduct, dev.idProduct))

Here一个很好的pyUsb教程。
有关更多文档,请使用Python交互模式和dir()help()

wxclj1h5

wxclj1h52#

@systempuntoout的回答很好,但今天我发现了一种更简单的方法来查找或迭代所有设备:usb.core.find(find_all=True)
以下是您的示例:

import usb
for dev in usb.core.find(find_all=True):
    print("Device:", dev.filename)
    print("  idVendor: %d (%s)" % (dev.idVendor, hex(dev.idVendor)))
    print("  idProduct: %d (%s)" % (dev.idProduct, hex(dev.idProduct)))
k2arahey

k2arahey3#

我也在寻找答案,这里是片段,工程:

def locate_usb():
    import win32file
    drive_list = []
    drivebits = win32file.GetLogicalDrives()
    for d in range(1, 26):
        mask = 1 << d
        if drivebits & mask:
            # here if the drive is at least there
            drname='%c:\\' % chr(ord('A') + d)
            t = win32file.GetDriveType(drname)
            if t == win32file.DRIVE_REMOVABLE:
                drive_list.append(drname)
    return drive_list

取自https://mail.python.org/pipermail/python-win32/2006-December/005406.html

2guxujil

2guxujil4#

但不管怎样...总有人会在某个时候寻找答案:
我用的是mac(osx10.9)..我成功地安装了带有mac端口的libusb,但是收到了“没有可用的后端”的消息,这是因为python找不到usb dylibs。
您必须将libusb的路径添加到您的$DYLD_LIBRARY_PATH(例如/opt/local/lib,无论您的macport安装了它)。
我一加进去,pyusb就工作得很好。

相关问题