Transport API

Transport Interface

.. py:module:: modscanner.transports.base

transport abstraction used by the ModScanner core

.. py:class:: OperationErrorKind(*values) :module: modscanner.transports.base

Bases: :py:class:~enum.StrEnum

categories of errors returned by a transport

.. py:attribute:: OperationErrorKind.PROTOCOL :module: modscanner.transports.base :value: ‘protocol’

.. py:attribute:: OperationErrorKind.TRANSPORT :module: modscanner.transports.base :value: ‘transport’

.. py:attribute:: OperationErrorKind.INVALID_RESPONSE :module: modscanner.transports.base :value: ‘invalid_response’

.. py:class:: BlockRead(values=None, error_kind=None, error=None) :module: modscanner.transports.base

Bases: :py:class:object

result of reading one contiguous block of rgisters

.. py:attribute:: BlockRead.values :module: modscanner.transports.base :type: tuple[int, …] | None

.. py:attribute:: BlockRead.error_kind :module: modscanner.transports.base :type: ~modscanner.transports.base.OperationErrorKind | None

.. py:attribute:: BlockRead.error :module: modscanner.transports.base :type: str | None

.. py:property:: BlockRead.ok :module: modscanner.transports.base :type: bool

  return whether the operation wass a success

.. py:method:: BlockRead.success(values) :module: modscanner.transports.base :classmethod:

  create a successful block result

.. py:method:: BlockRead.failure(kind, error) :module: modscanner.transports.base :classmethod:

  create a failed block result

.. py:class:: WriteResult(error_kind=None, error=None) :module: modscanner.transports.base

Bases: :py:class:object

result of a Modbus write operation

.. py:attribute:: WriteResult.error_kind :module: modscanner.transports.base :type: ~modscanner.transports.base.OperationErrorKind | None

.. py:attribute:: WriteResult.error :module: modscanner.transports.base :type: str | None

.. py:property:: WriteResult.ok :module: modscanner.transports.base :type: bool

.. py:method:: WriteResult.success() :module: modscanner.transports.base :classmethod:

.. py:method:: WriteResult.failure(kind, error) :module: modscanner.transports.base :classmethod:

.. py:class:: ModbusTransport(*args, **kwargs) :module: modscanner.transports.base

Bases: :py:class:~typing.Protocol

interface implemented by concrete Modbus transports

.. py:method:: ModbusTransport.connect() :module: modscanner.transports.base

  connect to the Modbus device

.. py:method:: ModbusTransport.close() :module: modscanner.transports.base

  close the connection

.. py:method:: ModbusTransport.read_coils(address, count, device_id) :module: modscanner.transports.base

  read coils

.. py:method:: ModbusTransport.read_discrete_inputs(address, count, device_id) :module: modscanner.transports.base

  read discrete inputs

.. py:method:: ModbusTransport.read_input_registers(address, count, device_id) :module: modscanner.transports.base

  read input registers

.. py:method:: ModbusTransport.read_holding_registers(address, count, device_id) :module: modscanner.transports.base

  read holding registers

.. py:method:: ModbusTransport.write_coil(address, value, device_id) :module: modscanner.transports.base

  write one coil using FC05

.. py:method:: ModbusTransport.write_coils(address, values, device_id) :module: modscanner.transports.base

  write multiple coils using FC15

.. py:method:: ModbusTransport.write_register(address, value, device_id) :module: modscanner.transports.base

  write one holding register using FC06

.. py:method:: ModbusTransport.write_registers(address, values, device_id) :module: modscanner.transports.base

  write multiple holding registers using FC16

PyModbus TCP Transport

:members: :undoc-members: :show-inheritance: