Projekt

Obecné

Profil

Stáhnout (1.11 KB) Statistiky
| Větev: | Tag: | Revize:
1 0b96f10c Pultak
import logging
2
3 62efcbc4 silhavyj
import usb.core
4
import usb.util
5
6
7 272e6b50 silhavyj
_invalid_devices = []
8
9
10 62efcbc4 silhavyj
def read_connected_devices():
11 272e6b50 silhavyj
    logging.debug("reading all currently connected devices")
12 62efcbc4 silhavyj
    detected_devices = []
13
14
    busses = usb.busses()
15
16
    for bus in busses:
17
        devices = bus.devices
18
        for dev in devices:
19 272e6b50 silhavyj
            device = {
20
                "vendor_id": dev.idVendor,
21
                "product_id": dev.idProduct
22
            }
23 0f94f9b0 Pultak
            serial_number = None
24
            device_info = usb.core.find(idProduct=dev.idProduct)
25 5c67f214 Pultak
            try:
26 0f94f9b0 Pultak
                serial_number = usb.util.get_string(device_info, device_info.iSerialNumber)
27 731a638d silhavyj
            except ValueError:
28 272e6b50 silhavyj
                if device not in _invalid_devices:
29
                    logging.warning(f"Could not retrieve serial number from device {device}")
30
                    _invalid_devices.append(device)
31 0f94f9b0 Pultak
32
            if serial_number is not None:
33 272e6b50 silhavyj
                if device in _invalid_devices:
34
                    _invalid_devices.remove(device)
35
36
                device["serial_number"] = serial_number
37
                detected_devices.append(device)
38 62efcbc4 silhavyj
39
    return detected_devices