1
|
import logging
|
2
|
|
3
|
import usb.core
|
4
|
import usb.util
|
5
|
|
6
|
|
7
|
def read_connected_devices():
|
8
|
logging.debug(f'reading all currently connected devices')
|
9
|
detected_devices = []
|
10
|
|
11
|
busses = usb.busses()
|
12
|
|
13
|
for bus in busses:
|
14
|
devices = bus.devices
|
15
|
for dev in devices:
|
16
|
serial_number = None
|
17
|
device_info = usb.core.find(idProduct=dev.idProduct)
|
18
|
try:
|
19
|
serial_number = usb.util.get_string(device_info, device_info.iSerialNumber)
|
20
|
except:
|
21
|
# Failed to retrieve information from device
|
22
|
logging.info(f"device idVendor:{dev.idVendor} idProduct:{dev.idProduct} has invalid format")
|
23
|
pass
|
24
|
|
25
|
if serial_number is not None:
|
26
|
detected_devices.append({
|
27
|
"vendor_id": dev.idVendor,
|
28
|
"product_id": dev.idProduct,
|
29
|
"serial_number": serial_number
|
30
|
})
|
31
|
|
32
|
return detected_devices
|