- ebench - An extensible toolset to control e-instruments $Release:0.0.12-SNAPSHOT$
- As an electronics hobbyist need to control diverse electronic
instruments
- to set up instruments in various configurations
- to collect data in projects for further processing and documentation
- with the objective to reap benefits
- ab initio by having configuration setups and data collection actions documented
- and thenceforth being able to automate setup construction and data collection with the help of scripts
- with gently sloping adoption curve
- where instruments can be operated using interactive interface
- or command line interface
- and individual tools can be configured to work together in user and API interfaces
- allowing tool sessions to be exported for scripting for advanced use
- be prepared for implementation as on-going work to integrate tools
created by
- fellow hobbyists
- future me
- to build an electronic instrumentation system characterized by
- strict focus on instrument setup and data collection
- ease of use
- low maintenance
- high flexibility
- and high service value
The vision presented in the previous chapter is abstract and it
must be materialized for implementation. Meet ebench
-toolset, a
viability study, which, at this time, comprises following three
tools:
ebMenu
: Menu application using YAML configuration to integrate separate instrument controllers togetherebUnit
: Tool to control UNIT-T UTG962/932 Waveform generatorebRigol
: Tool to control Rigol MSO1104Z osciloscope
ebench
-toolset builds on the core idea of providing yet
another command line processing framework with a set of
infrastructure services.
The objective of the viability study is to validate, whether the benefits of the framework to be able
- to implement interactive, command line and API interfaces in one go, and
- to configure user interfaces and API interface of otherwise separate tools together
balance the downside of
- the need to learn and to use yet another framework, and
- the lack of features in a generic framework, when compared to a bespoken solution
ebench
- uses Python -language and builds on existing libraries
for instrument integration and command line configuration.
List of features mainained in FEATURES.org
ebMenu: Menu of ebench toolset Usage: ebMenu [options] [commands and parameters] Commands: skooppi : Rigol osciloscope control sgen : UNIT-T UTG962 signal generator control counters : Read hello.py counters counters2csv : Save hello.py counters to example.csv q : Exit ---------- Other ---------- ? : List commands ?? : List command parameters ! : Start recording . : Stop recording
ebUnit: Tool to control UNIT-T UTG962/932 Waveform generator Usage: ebUnit [options] [commands and parameters] Commands: sine : Generate sine -wave on channel 1|2 square : Generate square -wave on channel 1|2 pulse : Generate pulse -wave on channel 1|2 ramp : Generate ramp -wave on channel 1|2 arb : Upload wave file and use it to generate wave on channel 1|2 on : Switch on channel 1|2 off : Switch off channel 1|2 reset : Send reset to UTG900 signal generator ---------- Record ---------- ! : Start recording . : Stop recording screen : Take screenshot list_resources : List pyvisa resources (=pyvisa list_resources() wrapper)' ---------- Help ---------- q : Exit ? : List commands ?? : List command parameters More help: ebUnit --help : to list options ebUnit ? command=<command> : to get help on command <command> parameters Examples: ebUnit ? command=sine : help on sine command parameters ebUnit list_resources : Identify --addr option parameter ebUnit --addr 'USB0::1::2::3::0::INSTR': Run interactively on device found in --addr 'USB0::1::2::3::0::INSTR' ebUnit --captureDir=pics screen : Take screenshot to pics directory (form device in default --addr) ebUnit reset : Send reset to UTH900 waveform generator ebUnit sine channel=2 freq=2kHz : Generate 2 kHz sine signal on channel 2 ebUnit sine channel=1 square channel=2 : chaining sine generation on channel 1, and square generation on channel 2 Hint: Run reset to synchronize ebUnit -tool with device state. Ref= ?? command=reset One-liner in linux: ebUnit --addr $(ebUnit list_resources)
ebRigol: Tool to control Rigol MSO1104Z osciloscope Usage: ebRigol [options] [commands and parameters] Commands: ---------- Init ---------- general : General setup setup : Setup channel setupTrigger : Setup trigger timebase : Setup timebase podSetup : Setup digical channels podOff : Setup digical channels on : Open channel off : Close channel stat : Set statistics statClear : Clear statistics reset : Send reset to Rigol clear : Send clear to Rigol ---------- Measure ---------- measure : Measure ---------- Record ---------- ! : Start recording . : Stop recording screen : Take screenshot ---------- Help ---------- q : Exit ? : List commands ?? : List command parameters
Hello World example in HELLO.org. The example continues in GENTLE_SLOPE.org as a short story slowly climbing the hill from interactive use, command line use, configuration file use to Python scripting.
A more realistic example of instrument controller for Rigol MSO1104Z: TEMPLATE.org. This example, and the example HELLO.org present a template for instrument controller implementation.
BDD testig document for ebUnit
-tool in ebUnit.org.
TBD: Hello World example integrated with ebMenu
: EBMENU.org
TBD
Clone repo
git clone https://github.com/jarjuk/ebench
cat ebench/VERSION
0.0.10-pre5
cat ebench/RELEASES.md
Change working directory to ebench
cd ebench
and create distribution package into dist
-sub directory
python3 setup.py sdist bdist_wheel
Check distribution package files created in dist
directory:
ls -ltr dist
total 68 -rw-rw-r-- 1 jj jj 31438 huhti 27 21:54 ebench-0.0.10rc5.tar.gz -rw-rw-r-- 1 jj jj 36142 huhti 27 21:54 ebench-0.0.10rc5-py3-none-any.whl
To install the latest version found in dist
directory run
VERSION_FILE=$(ls -1tr dist/*.tar.gz | tail -1| cut -f2)
echo VERSION_FILE=$VERSION_FILE
python3 -m pip install --user $VERSION_FILE && echo installed $VERSION_FILE
Run
ebMenu _version
and expect to see same version number noticed in VERSION
-file
above
0.0.10-pre5
Use command _list_resources
to list VISA resource found by pyvisa tool
ebMenu _list_resources
In development environment it returns:
('USB0::26198::2100::1485061822::0::INSTR',)
ebMenu --debug=1 '?'
TDB
ebench
-tools should give usage instructions with ?
-command.
For example running
cat <<EOF | ebMenu
?
q
EOF
[?=help, q=quit] > ebMenu: Menu of ebench toolset Usage: ebMenu [options] [commands and parameters] Commands: skooppi : Rigol osciloscope control sgen : UNIT-T UTG962 signal generator control counters : Read hello.py counters counters2csv : Save hello.py counters to example.csv q : Exit ---------- Other ---------- ? : List commands ?? : List command parameters ! : Start recording . : Stop recording [?=help, q=quit] >
<<ebMenu>> ?