Source code for pymanip.aioinstruments.aioiec60488

"""Asynchronous IEC60488 instrument driver (:mod:`pymanip.aioinstruments.aioiec60488`)
======================================================================================

This module defines an asynchronous subclass of
:class:`fluidlab.instruments.iec60488.IEC60488`.

.. autoclass:: AsyncIEC60488
   :members:
   :private-members:

   .. autoattribute:: aclear_status

   .. autoattribute:: aquery_esr

   .. autoattribute:: aquery_stb

   .. autoattribute:: aquery_identification

   .. autoattribute:: areset_device

   .. autoattribute:: aperform_internal_test

   .. autoattribute:: await_till_completion_of_operations

   .. autoattribute:: aget_operation_complete_flag

   .. autoattribute:: await_continue


"""

import fluidlab.instruments.iec60488 as fl_iec60488
from pymanip.aioinstruments.aiofeatures import (
    AsyncWriteCommand,
    AsyncQueryCommand,
    AsyncRegisterValue,
)
from pymanip.aioinstruments.aiodrivers import AsyncDriver


[docs]class AsyncIEC60488(AsyncDriver, fl_iec60488.IEC60488): async def __aenter__(self): await super().__aenter__() identification = await self.aquery_identification() if isinstance(identification, str): identification = identification.strip() print(f"Initialization driver for device: {identification}") return self async def aquery_event_status_register(self): number = await self.aquery_esr() return self.status_enable_register.compute_dict_from_number(number) async def aquery_status_register(self): number = await self.aquery_stb() return self.status_enable_register.compute_dict_from_number(number)
afeatures = [ # Reporting Commands AsyncWriteCommand("aclear_status", "Clears the data status structure", "*CLS"), AsyncRegisterValue( "event_status_enable_register", doc=( """Event status enable register Used in the status and events reporting system. """ ), command_set="*ESE", keys=fl_iec60488.EVENT_STATUS_BYTES, ), AsyncQueryCommand("aquery_esr", "Query the event status register", "*ESR?"), AsyncRegisterValue( "status_enable_register", doc=( """Status enable register Used in the status reporting system. """ ), command_set="*SRE", keys=fl_iec60488.EVENT_STATUS_BYTES, ), AsyncQueryCommand("aquery_stb", "Query the status register", "*STB?"), # Internal operation commands AsyncQueryCommand("aquery_identification", "Identification query", "*IDN?"), AsyncWriteCommand("areset_device", "Perform a device reset", "*RST"), AsyncQueryCommand("aperform_internal_test", "Perform internal self-test", "*TST?"), # Synchronization commands AsyncWriteCommand( "await_till_completion_of_operations", 'Return "1" when all operation are completed', "*OPC", ), AsyncQueryCommand( "aget_operation_complete_flag", "Get operation complete flag", "*OPC?" ), AsyncQueryCommand("await_continue", "Wait to continue", "*WAI"), ] AsyncIEC60488._build_class_with_features(afeatures)