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: