Files
revpimodio2/docs/api/io.rst
T
Nicolai Buchwitz 2eac69b7bd docs: add comprehensive documentation structure and API reference
Created topic-based documentation:
- basics.rst: core concepts and fundamental usage
- cyclic_programming.rst: PLC-style programming with Cycletools
- event_programming.rst: event-driven patterns and callbacks
- advanced.rst: gateway IOs, replace_io_file, watchdog management
- installation.rst and quickstart.rst: getting started guides

Added complete API reference in docs/api/:
- All device classes including ModularBaseConnect_4_5 and GatewayMixin
- I/O, helper, and main class documentation

Enhanced Sphinx configuration with RTD theme and improved autodoc settings.
Removed auto-generated modules.rst and revpimodio2.rst.
2026-02-12 14:00:23 +01:00

3.4 KiB

<?xml version="1.0" encoding="utf-8"?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <style type="text/css"> /* :Author: David Goodger (goodger@python.org) :Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. Despite the name, some widely supported CSS2 features are used. See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to customize this style sheet. */ /* used to remove borders from tables and images */ .borderless, table.borderless td, table.borderless th { border: 0 } table.borderless td, table.borderless th { /* Override padding for "table.docutils td" with "! important". The right padding separates the table cells. */ padding: 0 0.5em 0 0 ! important } .first { /* Override more specific margin styles with "! important". */ margin-top: 0 ! important } .last, .with-subtitle { margin-bottom: 0 ! important } .hidden { display: none } .subscript { vertical-align: sub; font-size: smaller } .superscript { vertical-align: super; font-size: smaller } a.toc-backref { text-decoration: none ; color: black } blockquote.epigraph { margin: 2em 5em ; } dl.docutils dd { margin-bottom: 0.5em } object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { overflow: hidden; } /* Uncomment (and remove this text!) to get bold-faced definition list terms dl.docutils dt { font-weight: bold } */ div.abstract { margin: 2em 5em } div.abstract p.topic-title { font-weight: bold ; text-align: center } div.admonition, div.attention, div.caution, div.danger, div.error, div.hint, div.important, div.note, div.tip, div.warning { margin: 2em ; border: medium outset ; padding: 1em } div.admonition p.admonition-title, div.hint p.admonition-title, div.important p.admonition-title, div.note p.admonition-title, div.tip p.admonition-title { font-weight: bold ; font-family: sans-serif } div.attention p.admonition-title, div.caution p.admonition-title, div.danger p.admonition-title, div.error p.admonition-title, div.warning p.admonition-title, .code .error { color: red ; font-weight: bold ; font-family: sans-serif } /* Uncomment (and remove this text!) to get reduced vertical space in compound paragraphs. div.compound .compound-first, div.compound .compound-middle { margin-bottom: 0.5em } div.compound .compound-last, div.compound .compound-middle { margin-top: 0.5em } */ div.dedication { margin: 2em 5em ; text-align: center ; font-style: italic } div.dedication p.topic-title { font-weight: bold ; font-style: normal } div.figure { margin-left: 2em ; margin-right: 2em } div.footer, div.header { clear: both; font-size: smaller } div.line-block { display: block ; margin-top: 1em ; margin-bottom: 1em } div.line-block div.line-block { margin-top: 0 ; margin-bottom: 0 ; margin-left: 1.5em } div.sidebar { margin: 0 0 0.5em 1em ; border: medium outset ; padding: 1em ; background-color: #ffffee ; width: 40% ; float: right ; clear: right } div.sidebar p.rubric { font-family: sans-serif ; font-size: medium } div.system-messages { margin: 5em } div.system-messages h1 { color: red } div.system-message { border: medium outset ; padding: 1em } div.system-message p.system-message-title { color: red ; font-weight: bold } div.topic { margin: 2em } h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { margin-top: 0.4em } h1.title { text-align: center } h2.subtitle { text-align: center } hr.docutils { width: 75% } img.align-left, .figure.align-left, object.align-left, table.align-left { clear: left ; float: left ; margin-right: 1em } img.align-right, .figure.align-right, object.align-right, table.align-right { clear: right ; float: right ; margin-left: 1em } img.align-center, .figure.align-center, object.align-center { display: block; margin-left: auto; margin-right: auto; } table.align-center { margin-left: auto; margin-right: auto; } .align-left { text-align: left } .align-center { clear: both ; text-align: center } .align-right { text-align: right } /* reset inner alignment in figures */ div.align-right { text-align: inherit } /* div.align-center * { */ /* text-align: left } */ .align-top { vertical-align: top } .align-middle { vertical-align: middle } .align-bottom { vertical-align: bottom } ol.simple, ul.simple { margin-bottom: 1em } ol.arabic { list-style: decimal } ol.loweralpha { list-style: lower-alpha } ol.upperalpha { list-style: upper-alpha } ol.lowerroman { list-style: lower-roman } ol.upperroman { list-style: upper-roman } p.attribution { text-align: right ; margin-left: 50% } p.caption { font-style: italic } p.credits { font-style: italic ; font-size: smaller } p.label { white-space: nowrap } p.rubric { font-weight: bold ; font-size: larger ; color: maroon ; text-align: center } p.sidebar-title { font-family: sans-serif ; font-weight: bold ; font-size: larger } p.sidebar-subtitle { font-family: sans-serif ; font-weight: bold } p.topic-title { font-weight: bold } pre.address { margin-bottom: 0 ; margin-top: 0 ; font: inherit } pre.literal-block, pre.doctest-block, pre.math, pre.code { margin-left: 2em ; margin-right: 2em } pre.code .ln { color: gray; } /* line numbers */ pre.code, code { background-color: #eeeeee } pre.code .comment, code .comment { color: #5C6576 } pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } pre.code .literal.string, code .literal.string { color: #0C5404 } pre.code .name.builtin, code .name.builtin { color: #352B84 } pre.code .deleted, code .deleted { background-color: #DEB0A1} pre.code .inserted, code .inserted { background-color: #A3D289} span.classifier { font-family: sans-serif ; font-style: oblique } span.classifier-delimiter { font-family: sans-serif ; font-weight: bold } span.interpreted { font-family: sans-serif } span.option { white-space: nowrap } span.pre { white-space: pre } span.problematic, pre.problematic { color: red } span.section-subtitle { /* font-size relative to parent (h1..h6 element) */ font-size: 80% } table.citation { border-left: solid 1px gray; margin-left: 1px } table.docinfo { margin: 2em 4em } table.docutils { margin-top: 0.5em ; margin-bottom: 0.5em } table.footnote { border-left: solid 1px black; margin-left: 1px } table.docutils td, table.docutils th, table.docinfo td, table.docinfo th { padding-left: 0.5em ; padding-right: 0.5em ; vertical-align: top } table.docutils th.field-name, table.docinfo th.docinfo-name { font-weight: bold ; text-align: left ; white-space: nowrap ; padding-left: 0 } /* "booktabs" style (no vertical lines) */ table.docutils.booktabs { border: 0px; border-top: 2px solid; border-bottom: 2px solid; border-collapse: collapse; } table.docutils.booktabs * { border: 0px; } table.docutils.booktabs th { border-bottom: thin solid; text-align: left; } h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { font-size: 100% } ul.auto-toc { list-style-type: none } </style> </head>

IO Classes and Types

Classes for managing Revolution Pi inputs and outputs.

System Message: ERROR/3 (<stdin>, line 7)

Unknown directive type "currentmodule".

.. currentmodule:: revpimodio2.io

IOList

System Message: ERROR/3 (<stdin>, line 12)

Unknown directive type "autoclass".

.. autoclass:: IOList
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__, __getitem__, __contains__, __iter__

   Container for accessing all IO objects.

   The IOList provides multiple ways to access IOs:

   * **Direct attribute access**: ``rpi.io.button.value``
   * **String-based access**: ``rpi.io["button"].value``
   * **Iteration**: ``for io in rpi.io: ...``

   **Example:**

   .. code-block:: python

       # Direct access
       value = rpi.io.I_1.value
       rpi.io.O_1.value = True

       # String-based access
       value = rpi.io["I_1"].value

       # Check if IO exists
       if "sensor" in rpi.io:
           print(rpi.io.sensor.value)

       # Iterate all IOs
       for io in rpi.io:
           print(f"{io.name}: {io.value}")

IOBase

System Message: ERROR/3 (<stdin>, line 48)

Unknown directive type "autoclass".

.. autoclass:: IOBase
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Base class for all IO objects.

   **Properties:**



      IO name from piCtory configuration



      Current IO value (read/write)



      Byte address in process image



      Byte length (0 for single bits)



      IO type: 300=INPUT, 301=OUTPUT, 302=MEMORY



      Whether value is signed



      "little" or "big" endian



      Configured default value from piCtory



      Comment/description from piCtory



      Export flag status

Event Registration Methods

Value Manipulation Methods

IntIO

System Message: ERROR/3 (<stdin>, line 109)

Unknown directive type "autoclass".

.. autoclass:: IntIO
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   IO objects with integer value access.

   **Example:**

   .. code-block:: python

       # Get integer value
       temp = rpi.io.temperature.get_intvalue()

       # Set integer value
       rpi.io.setpoint.set_intvalue(1500)

Integer Value Methods

IntIOCounter

System Message: ERROR/3 (<stdin>, line 134)

Unknown directive type "autoclass".

.. autoclass:: IntIOCounter
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Counter input objects with reset capability.

   **Example:**

   .. code-block:: python

       # Read counter
       count = rpi.io.counter.value

       # Reset counter
       rpi.io.counter.reset()

StructIO

System Message: ERROR/3 (<stdin>, line 155)

Unknown directive type "autoclass".

.. autoclass:: StructIO
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Structured IO with format strings for complex data types.

   **Example:**

   .. code-block:: python

       # Get structured value
       value = rpi.io.sensor_data.get_structvalue()

Structured Value Methods

MemIO

System Message: ERROR/3 (<stdin>, line 177)

Unknown directive type "autoclass".

.. autoclass:: MemIO
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Memory IO with variant value access (string or integer).

RelaisOutput

System Message: ERROR/3 (<stdin>, line 188)

Unknown directive type "autoclass".

.. autoclass:: RelaisOutput
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Relay output with switching cycle counter.

   **Example:**

   .. code-block:: python

       # Get number of switching cycles
       cycles = rpi.io.relay.get_switching_cycles()

IOEvent

System Message: ERROR/3 (<stdin>, line 206)

Unknown directive type "autoclass".

.. autoclass:: IOEvent
   :members:
   :undoc-members:
   :show-inheritance:
   :special-members: __init__

   Internal class for IO event management.
</html>