async def _read(self, num_bytes) -> bytes:
        """
        Reads a given number of bytes

        :param num_bytes: How many bytes to read
        :returns: incoming bytes
        """
        while True:

            if self.in_waiting < num_bytes:
                await asyncio.sleep(self._asyncio_sleep_time)

            else:
                # Try to read bytes
                inbytes = self._serial_instance.read(num_bytes)

                # Just for safety, should never happen
                if not inbytes:
                    await asyncio.sleep(self._asyncio_sleep_time)
                else:
                    return inbytes
async def _read(self, num_bytes) -> bytes:
        """
        Reads a given number of bytes

        :param num_bytes: How many bytes to read
        :returns: incoming bytes
        """
        while True:

            if self.in_waiting < num_bytes:
                await asyncio.sleep(self._asyncio_sleep_time)

            else:
                # Try to read bytes
                inbytes = self._serial_instance.read(num_bytes)

                # Just for safety, should never happen
                if not inbytes:
                    await asyncio.sleep(self._asyncio_sleep_time)
                else:
                    return inbytes
async def _read ( self , num_bytes ) -> bytes : while True : if self . in_waiting < num_bytes : await asyncio . sleep ( self . _asyncio_sleep_time ) else : # Try to read bytes inbytes = self . _serial_instance . read ( num_bytes ) # Just for safety, should never happen if not inbytes : await asyncio . sleep ( self . _asyncio_sleep_time ) else : return inbytes
Reads a given number of bytes

        :param num_bytes: How many bytes to read
        :returns: incoming bytes
Reads a given number of bytes