Source code for pymanip.interfaces.aioserial

"""Asynchronous extension of :class:`~fluidlab.interfaces.serial_inter.SerialInterface` (:mod:`pymanip.interfaces.aioserial`)
=============================================================================================================================

This module defines :class:`AsyncSerialInterface` as a subclass of :class:`fluidlab.interfaces.serial_inter.SerialInterface` and
:class:`pymanip.interface.aiointer.AsyncQueryInterface`.

.. autoclass:: AsyncSerialInterface
   :members:
   :private-members:


"""
import warnings
import fluidlab.interfaces as flinter
import fluidlab.interfaces.serial_inter as fl_serial
from pymanip.interfaces.aiointer import AsyncQueryInterface


[docs]class AsyncSerialInterface(fl_serial.SerialInterface, AsyncQueryInterface): """This class is an asynchronous extension of :class:`fluidlab.interfaces.serial_inter.SerialInterface`. It inherits all its methods from the parent classes. """
[docs] async def _areadlines(self, *args, **kwargs): """Low-level co-routine to read lines from the instrument.""" async with self.lock: data = await self.loop.run_in_executor(None, self.readlines, *args) return data
[docs] async def areadlines(self, *args, **kwargs): """This co-routine method reads lines of data from the instrument.""" if not self.opened: warnings.warn( "readlines() called on non-opened interface.", flinter.InterfaceWarning ) self.open() return await self._areadlines(*args, **kwargs)