diff --git a/dsmr_parser/clients/serial_.py b/dsmr_parser/clients/serial_.py
index 12d2245..7adbc46 100644
--- a/dsmr_parser/clients/serial_.py
+++ b/dsmr_parser/clients/serial_.py
@@ -95,3 +95,32 @@ class AsyncSerialReader(SerialReader):
                     )
                 except ParseError as e:
                     logger.warning('Failed to parse telegram: %s', e)
+                    
+    async def read_as_object(self, queue):
+        """
+        Read complete DSMR telegram's from the serial interface and return a Telegram object.
+        
+        :rtype: generator
+        """
+
+        # create Serial StreamReader
+        conn = serial_asyncio.open_serial_connection(**self.serial_settings)
+        reader, _ = await conn
+
+        while True:
+
+            # Read line if available or give control back to loop until new
+            # data has arrived.
+            data = await reader.readline()
+            self.telegram_buffer.append(data.decode('ascii'))
+
+            for telegram in self.telegram_buffer.get_all():
+
+                    try:
+                        queue.put_nowait(
+                            Telegram(telegram, self.telegram_parser, self.telegram_specification)
+                        )
+                    except InvalidChecksumError as e:
+                        logger.warning(str(e))
+                    except ParseError as e:
+                        logger.error('Failed to parse telegram: %s', e)