+ def recv_data(self, exp_len, timeout=100):
+ msg = bytearray(b'')
+ if (exp_len > MAX_TRANSFER_SIZE):
+ raise ValueError(f"length package {exp_len} over max transfer size")
+ if (self.rx_ep == None):
+ return False
+ try:
+ received = 0
+ while received != exp_len:
+ buf = self.rx_ep.read(exp_len, timeout)
+ msg += buf
+ received += len(buf)
+ if received == exp_len:
+ return msg
+ except usb.core.USBError as e:
+ print(f"Timeout: error", e)
+ return msg