| @@ -201,10 +201,14 @@ class USBDevice(Device): | |||||
| """ | """ | ||||
| return self._device.read_data(1) | return self._device.read_data(1) | ||||
| def read_line(self, timeout=0.0): | |||||
| def read_line(self, timeout=0.0, purge_buffer=False): | |||||
| """ | """ | ||||
| Reads a line from the device. | Reads a line from the device. | ||||
| """ | """ | ||||
| if purge_buffer: | |||||
| self._buffer = '' | |||||
| def timeout_event(): | def timeout_event(): | ||||
| timeout_event.reading = False | timeout_event.reading = False | ||||
| @@ -237,10 +241,7 @@ class USBDevice(Device): | |||||
| else: | else: | ||||
| self._buffer = self._buffer[:-1] | self._buffer = self._buffer[:-1] | ||||
| time.sleep(0.001) | |||||
| except (usb.core.USBError, FtdiError), err: | except (usb.core.USBError, FtdiError), err: | ||||
| self._buffer = '' | |||||
| timer.cancel() | timer.cancel() | ||||
| raise util.CommError('Error reading from AD2USB device: {0}'.format(str(err))) | raise util.CommError('Error reading from AD2USB device: {0}'.format(str(err))) | ||||
| @@ -391,10 +392,12 @@ class SerialDevice(Device): | |||||
| """ | """ | ||||
| return self._device.read(1) | return self._device.read(1) | ||||
| def read_line(self, timeout=0.0): | |||||
| def read_line(self, timeout=0.0, purge_buffer=False): | |||||
| """ | """ | ||||
| Reads a line from the device. | Reads a line from the device. | ||||
| """ | """ | ||||
| if purge_buffer: | |||||
| self._buffer = '' | |||||
| def timeout_event(): | def timeout_event(): | ||||
| timeout_event.reading = False | timeout_event.reading = False | ||||
| @@ -428,13 +431,11 @@ class SerialDevice(Device): | |||||
| else: | else: | ||||
| self._buffer = self._buffer[:-1] | self._buffer = self._buffer[:-1] | ||||
| time.sleep(0.001) | |||||
| except (OSError, serial.SerialException), err: | except (OSError, serial.SerialException), err: | ||||
| self._buffer = '' | |||||
| timer.cancel() | timer.cancel() | ||||
| raise util.CommError('Error reading from AD2SERIAL device: {0}'.format(str(err))) | raise util.CommError('Error reading from AD2SERIAL device: {0}'.format(str(err))) | ||||
| else: | else: | ||||
| if got_line: | if got_line: | ||||
| ret = self._buffer | ret = self._buffer | ||||
| @@ -556,10 +557,14 @@ class SocketDevice(Device): | |||||
| return data | return data | ||||
| def read_line(self, timeout=0.0): | |||||
| def read_line(self, timeout=0.0, purge_buffer=False): | |||||
| """ | """ | ||||
| Reads a line from the device. | Reads a line from the device. | ||||
| """ | """ | ||||
| if purge_buffer: | |||||
| self._buffer = '' | |||||
| def timeout_event(): | def timeout_event(): | ||||
| timeout_event.reading = False | timeout_event.reading = False | ||||
| @@ -592,10 +597,7 @@ class SocketDevice(Device): | |||||
| else: | else: | ||||
| self._buffer = self._buffer[:-1] | self._buffer = self._buffer[:-1] | ||||
| time.sleep(0.001) | |||||
| except socket.error, err: | except socket.error, err: | ||||
| self._buffer = '' | |||||
| timer.cancel() | timer.cancel() | ||||
| raise util.CommError('Error reading from Socket device: {0}'.format(str(err))) | raise util.CommError('Error reading from Socket device: {0}'.format(str(err))) | ||||