开发者

usb device identification

开发者 https://www.devze.com 2022-12-24 16:37 出处:网络
i am using python on ubuntu 9.04 say i have two usb devices connected to a single PC. how can i identify the devices in python code.....for example like

i am using python on ubuntu 9.04 say i have two usb devices connected to a single PC. how can i identify the devices in python code.....for example like

if usb port id == A write data to device 1 if usb port id == B write data to device开发者_开发技巧 2

any ideas....


Have you tried pyUsb? Install using:

pip install pyusb

Here a snippet of what you can do:

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 a good tutorial of pyUsb.

For more documentation, use Python interactive mode with dir() and help().


@systempuntoout's answer is nice but today I have found an easier way to find or iterate over all devices: usb.core.find(find_all=True)

Following with your example:

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))


Ok i was also googling around for answers, here is snippet that works:

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

taken from https://mail.python.org/pipermail/python-win32/2006-December/005406.html


but whatever.. someone will look for the answer at some point:

I'm on a mac (osx 10.9).. I successfully installed libusb with mac ports, but was getting the "no backend available" message. It's because python can't find the usb dylibs.

You have to add the path to your libusb to your $DYLD_LIBRARY_PATH (e.g. /opt/local/lib wherever your macport installed it).

As soon I as I added it, pyusb worked fine.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号