Update documentation

This commit is contained in:
2023-01-22 18:05:56 +01:00
parent 05e4ff96ca
commit 8ddb323f24
18 changed files with 148 additions and 265 deletions

View File

@@ -1,3 +1,5 @@
recursive-include docs *
recursive-exclude docs/_build *
include LICENSE.txt include LICENSE.txt
include Makefile include Makefile
include MANIFEST.in include MANIFEST.in

View File

@@ -28,7 +28,7 @@ build:
$(PYTHON) -m setup sdist $(PYTHON) -m setup sdist
$(PYTHON) -m setup bdist_wheel $(PYTHON) -m setup bdist_wheel
install: install: build
$(PYTHON) -m pip install dist/$(PACKAGE)-*.whl $(PYTHON) -m pip install dist/$(PACKAGE)-*.whl
.PHONY: build install .PHONY: build install

View File

@@ -1,26 +1,32 @@
# RevPiModIO # RevPiModIO
### Python3 programming for RevolutionPi of Kunbus GmbH. ### Python3 programming for RevolutionPi of KUNBUS GmbH.
The module provides all devices and IOs from the piCtory configuration in Python3. It allows direct The module provides all devices and IOs from the piCtory configuration in
access to the values via their assigned name. Read and write actions on the process image are Python3. It allows direct access to the values via their assigned name. Read and
managed by the module itself without the programmer having to worry about offsets and addresses. write actions on the process image are managed by the module itself without the
For the gateway modules such as ModbusTCP or Profinet, own 'inputs' and 'outputs' can be defined programmer having to worry about offsets and addresses.
over a specific address range. These IOs can be accessed directly from the values using Python3.
For the gateway modules such as ModbusTCP or Profinet, own 'inputs' and
'outputs' can be defined over a specific address range. These IOs can be
accessed directly from the values using Python3.
#### [RevolutionPi Hardware](https://revolution.kunbus.com) #### [RevolutionPi Hardware](https://revolution.kunbus.com)
The hardware configuration is done via a web page, which is located on the PiCore module. The
program is called “piCtory”.
All inputs and outputs can be assigned symbolic names to facilitate their handling and programming. The hardware configuration is done via a web page, which is located on the
If this configuration is created and activated, the data of the input, output and gateway modules PiCore module. The program is called “piCtory”.
are exchanged via a 4096-byte process image.
All inputs and outputs can be assigned symbolic names to facilitate their
handling and programming. If this configuration is created and activated, the
data of the input, output and gateway modules are exchanged via a 4096-byte
process image.
#### [Our RevPiModIO module](https://revpimodio.org/) #### [Our RevPiModIO module](https://revpimodio.org/)
If you use our module in Python3, it uses the piCtory configuration to create all the inputs and If you use our module in Python3, it uses the piCtory configuration to create
outputs with their symbolic names as objects. The programmer can address these directly via the all the inputs and outputs with their symbolic names as objects. The programmer
symbolic names and access the values of the inputs and outputs both reading and writing! can address these directly via the symbolic names and access the values of the
inputs and outputs both reading and writing!
``` ```
import revpimodio2 import revpimodio2
@@ -34,11 +40,11 @@ if rpi.io.t_on.value:
rpi.exit() rpi.exit()
``` ```
In addition, it provides the developer with many useful functions that can be used to develop In addition, it provides the developer with many useful functions that can be
cyclic or event-based programs. used to develop cyclic or event-based programs.
If you know the .add_event_detect(...) function of the GPIO module from the Raspberry Pi, you If you know the .add_event_detect(...) function of the GPIO module from the
can also achieve this behavior with the Revolution Pi: Raspberry Pi, you can also achieve this behavior with the Revolution Pi:
``` ```
import revpimodio2 import revpimodio2
@@ -58,8 +64,8 @@ rpi.io.t_on.reg_event(event_detect)
rpi.mainloop() rpi.mainloop()
``` ```
Even with hardware changes, but constant names of the inputs and outputs, the actual Python3 Even with hardware changes, but constant names of the inputs and outputs, the
source code does not need to be changed! actual Python3 source code does not need to be changed!
#### How it works: #### How it works:
@@ -79,10 +85,10 @@ source code does not need to be changed!
#### Summary #### Summary
With this module we want to spare all Python developers a lot of work. All communication with the With this module we want to spare all Python developers a lot of work. All
process image is optimally performed inside the module. Changes to the inputs and outputs are also communication with the process image is optimally performed inside the module.
evaluated along with the additional functions of the module give the developer many tools along Changes to the inputs and outputs are also evaluated along with the additional
the way. functions of the module give the developer many tools along the way.
More examples: (https://revpimodio.org/en/blogs/examples/) More examples: (https://revpimodio.org/en/blogs/examples/)

View File

@@ -1,10 +1,10 @@
# Minimal makefile for Sphinx documentation # Minimal makefile for Sphinx documentation
# #
# You can set these variables from the command line. # You can set these variables from the command line, and also
SPHINXOPTS = # from the environment for the first two.
SPHINXBUILD = sphinx-build SPHINXOPTS ?=
SPHINXPROJ = RevPiModIO2 SPHINXBUILD ?= sphinx-build
SOURCEDIR = . SOURCEDIR = .
BUILDDIR = _build BUILDDIR = _build
@@ -12,9 +12,12 @@ BUILDDIR = _build
help: help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile clean:
rm -R $(BUILDDIR)
.PHONY: help clean Makefile
# Catch-all target: route all unknown targets to Sphinx using the new # Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile %: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@@ -1,174 +1,36 @@
#!/usr/bin/env python3 # Configuration file for the Sphinx documentation builder.
# -*- coding: utf-8 -*-
# #
# RevPiModIO2 documentation build configuration file, created by # For the full list of built-in configuration values, see the documentation:
# sphinx-quickstart on Sun Oct 20 12:38:53 2019. # https://www.sphinx-doc.org/en/master/usage/configuration.html
#
# This file is execfile()d with the current directory set to its
# containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#
import os import os
import sys import sys
sys.path.insert(0, os.path.abspath('../'))
sys.path.insert(0, os.path.abspath('../src'))
from revpimodio2 import __version__ from revpimodio2 import __version__
# -- General configuration ------------------------------------------------ # -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
# If your documentation needs a minimal Sphinx version, state it here. project = 'revpimodio2'
# copyright = '2023, Sven Sager'
# needs_sphinx = '1.0' author = 'Sven Sager'
version = __version__
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [ extensions = [
'sphinx.ext.autodoc', 'sphinx.ext.autodoc',
'sphinx.ext.todo', 'sphinx.ext.todo',
'sphinx.ext.viewcode' 'sphinx.ext.viewcode'
] ]
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = '.rst'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = 'RevPiModIO2'
copyright = '2019, Sven Sager (NaruX)'
author = 'Sven Sager (NaruX)'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = __version__
# The full version, including alpha/beta/rc tags.
# release = ''
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
# The name of the Pygments (syntax highlighting) style to use. # -- Options for HTML output -------------------------------------------------
pygments_style = 'sphinx' # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = 'alabaster' html_theme = 'alabaster'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
# html_theme_options = {}
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static'] html_static_path = ['_static']
# Custom sidebar templates, must be a dictionary that maps document names
# to template names.
#
# This is required for the alabaster theme
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
html_sidebars = {
'**': [
'relations.html', # needs 'show_related': True theme option to display
'searchbox.html',
]
}
# -- Options for HTMLHelp output ------------------------------------------
# Output file base name for HTML help builder.
htmlhelp_basename = 'RevPiModIO2doc'
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(master_doc, 'RevPiModIO2.tex', 'RevPiModIO2 Documentation',
'Sven Sager (NaruX)', 'manual'),
]
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, 'revpimodio2', 'RevPiModIO2 Documentation',
[author], 1)
]
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(master_doc, 'RevPiModIO2', 'RevPiModIO2 Documentation',
author, 'RevPiModIO2', 'One line description of project.',
'Miscellaneous'),
]

View File

@@ -1,9 +1,9 @@
.. RevPiModIO2 documentation master file, created by .. revpimodio2 documentation master file, created by
sphinx-quickstart on Sun Oct 20 12:38:53 2019. sphinx-quickstart on Sun Jan 22 17:49:41 2023.
You can adapt this file completely to your liking, but it should at least You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive. contain the root `toctree` directive.
Welcome to RevPiModIO2's documentation! Welcome to revpimodio2's documentation!
======================================= =======================================
.. toctree:: .. toctree::

View File

@@ -1,5 +1,5 @@
revpimodio2 src
=========== ===
.. toctree:: .. toctree::
:maxdepth: 4 :maxdepth: 4

View File

@@ -1,7 +0,0 @@
revpimodio2\.app module
=======================
.. automodule:: revpimodio2.app
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.device module
==========================
.. automodule:: revpimodio2.device
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.helper module
==========================
.. automodule:: revpimodio2.helper
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.io module
======================
.. automodule:: revpimodio2.io
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.modio module
=========================
.. automodule:: revpimodio2.modio
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.netio module
=========================
.. automodule:: revpimodio2.netio
:members:
:undoc-members:
:show-inheritance:

View File

@@ -4,20 +4,82 @@ revpimodio2 package
Submodules Submodules
---------- ----------
.. toctree:: revpimodio2.app module
----------------------
revpimodio2.app .. automodule:: revpimodio2.app
revpimodio2.device :members:
revpimodio2.helper :undoc-members:
revpimodio2.io :show-inheritance:
revpimodio2.modio
revpimodio2.netio revpimodio2.device module
revpimodio2.summary -------------------------
.. automodule:: revpimodio2.device
:members:
:undoc-members:
:show-inheritance:
revpimodio2.errors module
-------------------------
.. automodule:: revpimodio2.errors
:members:
:undoc-members:
:show-inheritance:
revpimodio2.helper module
-------------------------
.. automodule:: revpimodio2.helper
:members:
:undoc-members:
:show-inheritance:
revpimodio2.io module
---------------------
.. automodule:: revpimodio2.io
:members:
:undoc-members:
:show-inheritance:
revpimodio2.modio module
------------------------
.. automodule:: revpimodio2.modio
:members:
:undoc-members:
:show-inheritance:
revpimodio2.netio module
------------------------
.. automodule:: revpimodio2.netio
:members:
:undoc-members:
:show-inheritance:
revpimodio2.pictory module
--------------------------
.. automodule:: revpimodio2.pictory
:members:
:undoc-members:
:show-inheritance:
revpimodio2.summary module
--------------------------
.. automodule:: revpimodio2.summary
:members:
:undoc-members:
:show-inheritance:
Module contents Module contents
--------------- ---------------
.. automodule:: revpimodio2 .. automodule:: revpimodio2
:members: :members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:

View File

@@ -1,7 +0,0 @@
revpimodio2\.summary module
===========================
.. automodule:: revpimodio2.summary
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,15 +1,19 @@
#! /usr/bin/env python3 #! /usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Setupscript for revpimodio.""" """Setup-script for revpimodio2."""
__author__ = "Sven Sager" __author__ = "Sven Sager"
__copyright__ = "Copyright (C) 2023 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "LGPLv3" __license__ = "LGPLv3"
from setuptools import setup, find_namespace_packages from setuptools import setup, find_namespace_packages
with open("README.md") as fh:
# Load long description from readme file
long_description = fh.read()
setup( setup(
name="revpimodio2", name="revpimodio2",
version="2.6.0rc2", version="2.6.0rc3",
packages=find_namespace_packages("src"), packages=find_namespace_packages("src"),
package_dir={'': 'src'}, package_dir={'': 'src'},
@@ -27,16 +31,9 @@ setup(
author_email="akira@narux.de", author_email="akira@narux.de",
maintainer="Sven Sager", maintainer="Sven Sager",
maintainer_email="akira@revpimodio.org", maintainer_email="akira@revpimodio.org",
description="Python3 programming for RevolutionPi of Kunbus GmbH", description="Python3 programming for RevolutionPi of KUNBUS GmbH",
long_description="Das Modul stellt alle Devices und IOs aus der piCtory Konfiguration \n" long_description=long_description,
"in Python3 zur Verfügung. Es ermöglicht den direkten Zugriff auf die \n" long_description_content_type="text/markdown",
"Werte über deren vergebenen Namen. Lese- und Schreibaktionen mit dem \n"
"Prozessabbild werden von dem Modul selbst verwaltet, ohne dass sich \n"
"der Programmierer um Offsets und Adressen kümmern muss. Für die \n"
"Gatewaymodule wie ModbusTCP oder Profinet sind eigene 'Inputs' und \n"
"'Outputs' über einen bestimmten Adressbereich definierbar. Auf \n"
"diese IOs kann mit Python3 über den Namen direkt auf die Werte \n"
"zugegriffen werden.",
keywords=["revpi", "revolution pi", "revpimodio", "plc", "automation"], keywords=["revpi", "revolution pi", "revpimodio", "plc", "automation"],
classifiers=[ classifiers=[
"Development Status :: 5 - Production/Stable", "Development Status :: 5 - Production/Stable",

View File

@@ -5,7 +5,7 @@ Stellt alle Klassen fuer den RevolutionPi zur Verfuegung.
Webpage: https://revpimodio.org/ Webpage: https://revpimodio.org/
Stellt Klassen fuer die einfache Verwendung des Revolution Pis der Stellt Klassen fuer die einfache Verwendung des Revolution Pis der
Kunbus GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden KUNBUS GmbH (https://revolution.kunbus.de/) zur Verfuegung. Alle I/Os werden
aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar aus der piCtory Konfiguration eingelesen und mit deren Namen direkt zugreifbar
gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar gemacht. Fuer Gateways sind eigene IOs ueber mehrere Bytes konfigurierbar
Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu. Mit den definierten Namen greift man direkt auf die gewuenschten Daten zu.
@@ -22,8 +22,8 @@ __all__ = [
__author__ = "Sven Sager <akira@revpimodio.org>" __author__ = "Sven Sager <akira@revpimodio.org>"
__copyright__ = "Copyright (C) 2023 Sven Sager" __copyright__ = "Copyright (C) 2023 Sven Sager"
__license__ = "LGPLv3" __license__ = "LGPLv3"
__name__ = "revpimodio2" __package__ = "revpimodio2"
__version__ = "2.6.0rc2" __version__ = "2.6.0rc3"
from ._internal import * from ._internal import *
from .helper import Cycletools, EventCallback from .helper import Cycletools, EventCallback

View File

@@ -250,7 +250,7 @@ class RevPiModIO(object):
err_names_check = {} err_names_check = {}
for device in sorted(lst_devices, key=lambda x: x["offset"]): for device in sorted(lst_devices, key=lambda x: x["offset"]):
# VDev alter piCtory Versionen auf Kunbus-Standard ändern # VDev alter piCtory Versionen auf KUNBUS-Standard ändern
if device["position"] == "adap.": if device["position"] == "adap.":
device["position"] = 64 device["position"] = 64
while device["position"] in self.device: while device["position"] in self.device: