diff --git a/lib/hidapi/udev.py b/lib/hidapi/udev.py index f0d76d5c..29ecf153 100644 --- a/lib/hidapi/udev.py +++ b/lib/hidapi/udev.py @@ -30,6 +30,7 @@ from __future__ import absolute_import, division, print_function, unicode_litera import os as _os import errno as _errno +from time import sleep from select import select as _select from pyudev import Context as _Context, Monitor as _Monitor, Device as _Device from pyudev import DeviceNotFoundError @@ -261,16 +262,16 @@ def write(device_handle, data): assert data assert isinstance(data, bytes), (repr(data), type(data)) retrycount = 0 - while(True and retrycount < 3): - try: - bytes_written = _os.write(device_handle, data) - if bytes_written != len(data): - raise IOError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data))) - except IOError as e: - if e.errno != _errno.EPIPE: - raise e + bytes_written = 0 + while(retrycount < 3): + bytes_written = _os.write(device_handle, data) + if bytes_written != len(data): + sleep(0.1) retrycount += 1 - continue + else: + break + if bytes_written != len(data): + raise IOError(_errno.EIO, 'written %d bytes out of expected %d' % (bytes_written, len(data))) def read(device_handle, bytes_count, timeout_ms=-1):