'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
    read = bytearray()
    while (len(read) < size):
        buf = os.read(self.fd, (size - len(read)))
        if (not buf):
            break
        read.extend(buf)
    return bytes(read)
