Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 272e6b50

Přidáno uživatelem Jakub Šilhavý před více než 2 roky(ů)

re #9419 Made sure that the error message gets printed out only one per device

Zobrazit rozdíly:

client/usb_detector/usb_reader.py
4 4
import usb.util
5 5

  
6 6

  
7
_invalid_devices = []
8

  
9

  
7 10
def read_connected_devices():
8
    logging.debug(f'reading all currently connected devices')
11
    logging.debug("reading all currently connected devices")
9 12
    detected_devices = []
10 13

  
11 14
    busses = usb.busses()
......
13 16
    for bus in busses:
14 17
        devices = bus.devices
15 18
        for dev in devices:
19
            device = {
20
                "vendor_id": dev.idVendor,
21
                "product_id": dev.idProduct
22
            }
16 23
            serial_number = None
17 24
            device_info = usb.core.find(idProduct=dev.idProduct)
18 25
            try:
19 26
                serial_number = usb.util.get_string(device_info, device_info.iSerialNumber)
20 27
            except:
21
                # Failed to retrieve information from device
22
                logging.info(f"device idVendor:{dev.idVendor} idProduct:{dev.idProduct} has invalid format")
23
                pass
28
                if device not in _invalid_devices:
29
                    logging.warning(f"Could not retrieve serial number from device {device}")
30
                    _invalid_devices.append(device)
24 31

  
25 32
            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
                })
33
                if device in _invalid_devices:
34
                    _invalid_devices.remove(device)
35

  
36
                device["serial_number"] = serial_number
37
                detected_devices.append(device)
31 38

  
32 39
    return detected_devices

Také k dispozici: Unified diff