I'm facing that for python pyusb can get the idVendor, idProduct successfully but my dev is still none, which will affect my later operation, I need a hand for here, thanks.
mostly the pyusb read and write function is working, so I am worndering.
the code
import time
from usb.core import find
from usb.util import get_string
import usb.backend.libusb1
import re
import usb.core
import usb.util
import os
import numpy as np
def info_usb_device(dev):
xdev = find(idVendor=dev.idVendor, idProduct=dev.idProduct)
if xdev.bDeviceClass == 9:
return
if xdev._manufacturer is None:
xdev._manufacturer = get_string(xdev, xdev.iManufacturer, langid=1033)
if xdev._product is None:
xdev._product = get_string(xdev, xdev.iProduct, langid=1033)
device_info = '[%20s] %8d %9d %s - %s' % (xdev.serial_number, dev.idVendor, dev.idProduct,
str(xdev._manufacturer).strip(),
str(xdev._product).strip())
return xdev.serial_number, device_info
def add_usb_devices(device_dict):
new_devices = []
for bus in usb.busses():
for dev in bus.devices:
if dev is None:
continue
serial_info = info_usb_device(dev)
if serial_info is not None:
(serial, info) = serial_info
if serial not in device_dict:
new_devices.append(serial)
device_dict[serial] = info
return new_devices
if __name__ == "__main__":
device_dict = {}
print('%22s %8s %9s %s' % ('serial', 'idVendor', 'idProduct', 'Manufacturer - Product'))
print('-'*22, '-'*8, '-'*9, '-'*30)
# first scan
add_usb_devices(device_dict)
for device_info in device_dict.values():
print(device_info)
# next scans
for i in range(5): # run 5 more scans
new_serials = add_usb_devices(device_dict)
if len(new_serials) > 0:
print('** (scan %d) FOUND NEW USB DEVICES/SERIALS: %s' % (i, new_serials))
for serial in new_serials:
print(device_dict[serial])
time.sleep(3) # waiting 3 seconds before new scan
str_device_dict_serial = device_dict[serial]
listed__device_dict_serial = re.findall(r'\b\d+\b', str_device_dict_serial)
print('Scans completed.')
print("+ + + + + + + + + + + + +")
print(device_dict[serial])
print(listed__device_dict_serial)
input_idVendor = listed__device_dict_serial[0]
input_idProduct = listed__device_dict_serial[1]
dev = usb.core.find(idVendor= input_idVendor, idProduct=input_idProduct)
print(input_idVendor)
print(input_idProduct)
print(dev)
#print(ep)
and the output:
(base) joy@joy-System-Product-Name:~$ sudo python '/home/joy/fe_dir/combined_function.py'
serial idVendor idProduct Manufacturer - Product
---------------------- -------- --------- ------------------------------
[ None] 1133 49271 Logitech - USB Optical Mouse
[ 2004888] 1423 37728 - USB Reader
[5334354E373539325A315A4B] 5117 2112 Generic - External
** (scan 2) FOUND NEW USB DEVICES/SERIALS: ['01DZTW5EXY5TSUF8']
[ 01DZTW5EXY5TSUF8] 34148 4096 JetFlash - Mass Storage Device
Scans completed.
+ + + + + + + + + + + + +
[ 01DZTW5EXY5TSUF8] 34148 4096 JetFlash - Mass Storage Device
['34148', '4096']
34148
4096
None
the bottom's "None" showing that somehow I couldn't get the dev