Reading Data from USB Device by Device Number

  • Share this:

Code introduction


This function is used to read data from a USB device connected to a specified device number. It first finds the device, then gets the device's configuration and interface, sets the alternate setting of the interface, and finally reads data from the device.


Technology Stack : PyUSB

Code Type : USB device reading

Code Difficulty : Intermediate


                
                    
def read_usb_device(device_number):
    import usb.core
    import usb.util

    # Find the device connected to the specified device number
    device = usb.core.find(idVendor=0x1234, idProduct=0x5678)
    if device is None:
        raise ValueError("Device not found")

    # Set the active configuration
    config = device.get_active_configuration()
    # Get the first interface
    interface = config[(0,0)]

    # Set the alternate setting of the first alternative interface
    altsetting = interface[0]
    usb.util.claim_interface(device, interface)

    # Read data from the device
    try:
        data = device.read(altsetting.bEndpointAddress, altsetting.wMaxPacketSize, timeout=2000)
    except usb.core.USBError as e:
        data = None
        print(f"Error reading from USB device: {e}")

    usb.util.release_interface(device, interface)
    return data                
              
Tags: