Interface reference
===================
.. _ref_interface_overview:
Overview
--------
The previous sections covered the implementation of the system-level features
in the web app program [:doc:``_ref_ui_overview``], in addition to the
electronics integration and control handled by the microcontroller program
[:doc:``_ref_micro_overview``].
In order for these two programs to communicate with each other, an additional
python program
Whilst the previous sections covered the implementation of the high-level,
user-facing control of the system [:doc:``_ref_ui_overview``], as well as
the lower-level electronic control routines handled by the
[:doc:``_ref_micro_overview``], the means by which both programs communicate
with each other was not discussed in a lot of detail.
As previously mentioned in the the :doc:`basic` section, the dashboard-style
user interface for the system is built using a `widget
`_ based approach, that relies
on the `Jupyter `_ interactive computing platform.
This approach was chosen for the following reasons:
* As a Python-based project, the Jupyter platform is a natural fit, providing a
popular, well-documented Python environment that is capable of producing rich
interactive, web-based visualisations, using python libraries and code which
should be familiar to undergraduates who have a grounding in Python
programming.
* Modern web browsers provide an ideal deployment platform for graphical
applications, offering compatibility across a wide range of devices,
operating systems and user interfaces (mouse, or touchscreen).
.. _ref_server_description:
app
---
.. automodule:: app
Widget layout
^^^^^^^^^^^^^
.. figure:: ../images/app.png
:align: center
:scale: 50%
:alt: Web app UI module structure
|
Widget objects
^^^^^^^^^^^^^^
|
.. autodata:: tab
:annotation:
.. jupyter-execute::
:hide-code:
import os
import sys
ROOT_DIR = os.path.abspath('../')
WEBAPP_PATH = ROOT_DIR + '/src/dashboard/'
sys.path.insert(0, WEBAPP_PATH)
from app import *
|
Helper functions
^^^^^^^^^^^^^^^^
.. autofunction:: work
.. autofunction:: main
|
Code listing
^^^^^^^^^^^^
.. literalinclude:: ../../../src/receive.py
:language: python