'Read size bytes from the serial port. If a timeout is set it may
return less characters as requested. With no timeout it will block
until the requested number of bytes is read.'

def read(self, size=1):

    if (not self.is_open):
        raise portNotOpenError
    data = bytearray()
    while size:
        try:
            data.append(self._port_handle.ReadByte())
        except System.TimeoutException:
            break
        else:
            size -= 1
    return bytes(data)
