hardware-control 3.0.0__tar.gz → 3.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hardware-control-3.0.0 → hardware_control-3.1.0}/.gitignore +2 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0}/.pre-commit-config.yaml +3 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0}/.readthedocs.yaml +1 -1
- {hardware-control-3.0.0/docs/source → hardware_control-3.1.0}/CHANGELOG.md +37 -0
- hardware_control-3.1.0/PKG-INFO +167 -0
- hardware_control-3.1.0/bitbucket-pipelines.yml +47 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/docs/source}/CHANGELOG.md +37 -0
- hardware_control-3.1.0/docs/source/images/TPI.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/index.rst +1 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/installation.rst +1 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instrument_index.rst +1 -0
- hardware_control-3.1.0/docs/source/instruments/picotech.rst +10 -0
- hardware_control-3.1.0/docs/source/instruments/trinity_power.rst +11 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/outlook.md +3 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/supported_instruments.rst +3 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/RGA_demo.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/TempMonitor_demo.py +0 -1
- hardware_control-3.1.0/pyproject.toml +100 -0
- hardware_control-3.1.0/setup.cfg +4 -0
- hardware_control-3.1.0/src/hardware_control/_version.py +16 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/App.py +54 -4
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/Dataset.py +3 -5
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/HCMainWindow.py +0 -4
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/Instrument.py +10 -10
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/ZMQRemoteAdapter.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/hooks.py +6 -6
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/logging.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/DelayGenerator.py +0 -2
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/FunctionGenerator.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/IOModule.py +0 -4
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/KeysightPowerSupply.py +46 -21
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/MicrowaveControl.py +41 -29
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/MultiPowerSupply.py +47 -79
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/Oscilloscope.py +3 -5
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/RGA.py +0 -2
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/TempMonitor.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/TempMonitor_Adam.py +3 -4
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/connection_status.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/data_widget.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/hc_widgets.py +21 -16
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/plot.py +7 -2
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/qtconsole.py +9 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/scan_widget.py +3 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/trace_plotter.py +6 -6
- hardware_control-3.1.0/src/hardware_control/icons/calibration-error.svg +99 -0
- hardware_control-3.1.0/src/hardware_control/icons/disabled.svg +78 -0
- hardware_control-3.1.0/src/hardware_control/icons/empty.svg +57 -0
- hardware_control-3.1.0/src/hardware_control/icons/interlocked.svg +93 -0
- hardware_control-3.1.0/src/hardware_control/icons/kill.svg +96 -0
- hardware_control-3.1.0/src/hardware_control/icons/max-voltage.svg +91 -0
- hardware_control-3.1.0/src/hardware_control/icons/over-current.svg +94 -0
- hardware_control-3.1.0/src/hardware_control/icons/over-power.svg +117 -0
- hardware_control-3.1.0/src/hardware_control/icons/over-temperature.svg +105 -0
- hardware_control-3.1.0/src/hardware_control/icons/over-voltage.svg +78 -0
- hardware_control-3.1.0/src/hardware_control/icons/ramping-down.svg +76 -0
- hardware_control-3.1.0/src/hardware_control/icons/ramping-up.svg +76 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/calibration-error.svg +95 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/channel_labels.svg +288 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/connection_label.svg +94 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/disabled.svg +74 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/empty.svg +57 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/func_gen.svg +141 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/interlocked.svg +89 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/kill.svg +92 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/max-voltage.svg +87 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/over-current.svg +90 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/over-power.svg +113 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/over-temperature.svg +101 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/over-voltage.svg +74 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/ramping-down.svg +72 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/ramping-up.svg +72 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/tripped.svg +83 -0
- hardware_control-3.1.0/src/hardware_control/icons/svg/under-voltage.svg +74 -0
- hardware_control-3.1.0/src/hardware_control/icons/tripped.svg +87 -0
- hardware_control-3.1.0/src/hardware_control/icons/under-voltage.svg +78 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/HP_3478A.py +1 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/Keithley_2400.py +8 -5
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_6015.py +7 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_6024.py +31 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/alicat/Alicat_M_Series.py +0 -1
- hardware_control-3.1.0/src/hardware_control/instruments/applied_motion/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/caen/Caen_RSeries.py +15 -5
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_36300.py +6 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/ni/Ni_9000.py +4 -5
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/picotech/Picoscope.py +51 -19
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_CIS200.py +1 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_DG535.py +0 -1
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/SRS_DG645.py +6 -4
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/trinity_power/tpi.py +37 -19
- hardware_control-3.1.0/src/hardware_control.egg-info/PKG-INFO +167 -0
- hardware_control-3.1.0/src/hardware_control.egg-info/SOURCES.txt +333 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_zmq.py +0 -1
- hardware-control-3.0.0/PKG-INFO +0 -108
- hardware-control-3.0.0/bitbucket-pipelines.yml +0 -14
- hardware-control-3.0.0/docs/source/instruments/picotech.rst +0 -10
- hardware-control-3.0.0/hardware_control/_version.py +0 -4
- hardware-control-3.0.0/hardware_control.egg-info/PKG-INFO +0 -108
- hardware-control-3.0.0/hardware_control.egg-info/SOURCES.txt +0 -302
- hardware-control-3.0.0/hardware_control.egg-info/not-zip-safe +0 -1
- hardware-control-3.0.0/pyproject.toml +0 -34
- hardware-control-3.0.0/setup.cfg +0 -70
- hardware-control-3.0.0/setup.py +0 -3
- {hardware-control-3.0.0 → hardware_control-3.1.0}/COPYRIGHT +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/LICENSE +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/MANIFEST.in +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/README.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/Makefile +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/make.bat +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_commands.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_instruments.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/adding_user_interfaces.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/App.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/Dataset.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/HCMainWindow.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/Instrument.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/ZMQAdapter.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/ZMQRemoteAdapter.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/hooks.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/logging.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base/zmq_helper.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/base_index.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/conf.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/examples.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/DelayGenerator.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/FlowController.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/FunctionGenerator.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/IOModule.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/KeysightPowerSupply.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/MultiPowerSupply.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/Oscilloscope.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/RGA.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/controls/TempMonitor.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/connection_status.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/data_widget.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/function_runner.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/hc_widgets.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/plot.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/qtconsole.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui/widgets/scan_widget.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/gui_index.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/hardware_control.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/how_to_contribute.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/howtos.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/ADAM-6015.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/ADAM-6024.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Alicat_M-Series.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/CAENR14xxET.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/CAENR803x.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/DG535.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/GP356.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/GP_VQM835.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/HP-34401A.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/HP-3478A.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight33500B.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight4000X.jpeg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Keysight_E36312A.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Lake_Shore_224.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Lake_Shore_372.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/NI9000.jpeg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/Pico_6000.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/RigolDP800.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/RigolDS100Z.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/SDG1000X.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/SRS_CIS.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/TDKLGenH.jpg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/DelayGenerator.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/FlowController.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/FunctionGenerator.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/IOModule.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/KeysightPowerSupply.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/MultiPowerSupply.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/Oscilloscope.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/RGA.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/controls/TempMonitor.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/connection_status.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/data_widget.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/function_runner.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/plot.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/qtconsole.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/scan_example.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/images/widgets/scan_widget.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/advantech.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/alicat.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/caen.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/keysight.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/lakeshore.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/ni.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/rigol.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/siglent.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/srs.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/instruments/tdkl.rst +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/overview.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/docs/source/using_hardware_control.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Caen14xxET_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/DelayGenerator_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FlowController_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FunctionGenerator_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/FunctionGenerator_demo_Siglent.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/IOModule_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/KeysightPowerSupply_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/MicrowaveController_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Oscilloscope_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Oscilloscope_demo_Rigol.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/Picoscope_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/README.md +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/RigolPowerSupply_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/TDKLGenH_demo.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/IOModule_channel_data.json +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/keysight_powersupply_init.json +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/Single_Instrument_Demos/settings_files/nidaq_grid_conf.json +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/dataset_plotting.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/hooks.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/interactive_python.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/remote_instrument/client.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/remote_instrument/main_app.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/examples/scan_widget.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/ZMQAdapter.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/base/zmq_helper.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/DeviceTemplate.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/FlowController.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/controls/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/gui/widgets/function_runner.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/BWlim.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/arrow.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/async_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/autosave_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/blue_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/burst.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-off.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-on.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/button-power-unknown.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ccurrent_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel1_yellow.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel2_green.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel3_blue.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel4_red.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_1.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_10.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_11.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_12.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_13.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_14.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_15.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_16.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_17.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_18.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_19.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_2.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_20.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_3.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_4.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_5.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_6.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_7.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_8.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/channel_9.png +0 -0
- {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/channel_labels.svg +0 -0
- {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/connection_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/cvoltage_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/disabled_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/enabled_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/error_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/falling_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/falling_ind_pale.svg +0 -0
- {hardware-control-3.0.0/hardware_control/icons/svg → hardware_control-3.1.0/src/hardware_control/icons}/func_gen.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/gas_flow_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/green_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grey_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grid_monitor_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/grid_power_supplies_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/high_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/horizontal_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_blue.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_darkgrey.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_green.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_grey.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/ind_red.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/invert.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/low_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/measurement_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/modulation.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/na_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/offline_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-off.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-on.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/on-off-indicator-unkown.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/online_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/plasma_source_timing_settings_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/power_supply_controls_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/pulse.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rampdn_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rampup_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/red_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rising_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/rising_ind_pale.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/scan.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/status_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/steady_ind.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/steady_label.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/stop.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/svg/labels.afdesign +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/svg/rise_fall_source.afdesign +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/trigger_label.png +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/icons/voltage_off.svg +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/HP_34401A.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/HP/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/Keithley_2001.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/Keithley/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/Adam_base.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/advantech/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/alicat/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/caen/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/demo/demoA.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_33500B.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/Keysight_4000X.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/keysight/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/Lakeshore224.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/Lakeshore372.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/LakeshoreBase.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/lakeshore/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/GP356.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/VQM835.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/mks/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/ni/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/picotech/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/Rigol_DP832.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/Rigol_DS1000Z.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/rigol/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/siglent/Siglent_SDG.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/siglent/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/srs/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/tdkl/TDKL_GenH.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/tdkl/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/trinity_power/__init__.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control/instruments/utility.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/dependency_links.txt +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/requires.txt +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0/src}/hardware_control.egg-info/top_level.txt +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_hooks.py +0 -0
- {hardware-control-3.0.0 → hardware_control-3.1.0}/tests/test_instrument.py +0 -0
|
@@ -7,12 +7,12 @@ repos:
|
|
|
7
7
|
- id: debug-statements
|
|
8
8
|
- id: check-merge-conflict
|
|
9
9
|
- repo: https://github.com/asottile/pyupgrade
|
|
10
|
-
rev: v3.
|
|
10
|
+
rev: v3.14.0
|
|
11
11
|
hooks:
|
|
12
12
|
- id: pyupgrade
|
|
13
|
-
args: ["--
|
|
13
|
+
args: ["--py39-plus"]
|
|
14
14
|
- repo: https://github.com/psf/black
|
|
15
|
-
rev: 23.1
|
|
15
|
+
rev: 23.9.1
|
|
16
16
|
hooks:
|
|
17
17
|
- id: black
|
|
18
18
|
language_version: python3
|
|
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.1.0] 2024-04-13
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- automatic update in App.py of instrument parameters was not working correctly
|
|
14
|
+
- Keysight 3600 power supply UI: remove on/off buttons for E3631A mode (only global on/off available)
|
|
15
|
+
- Adam6015: detect offline mode in case command times out
|
|
16
|
+
- plotbase: define variables in init
|
|
17
|
+
- Picoscope: setting larger voltage ranges
|
|
18
|
+
- MWController: added display of actual power level
|
|
19
|
+
- TPI: by default show -9 to +9 dBm, option to override this
|
|
20
|
+
- TPI: fix use in dummy mode
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Keysight 3600 power supply: add readout of persona
|
|
24
|
+
- Picoscope: readout of scope parameters
|
|
25
|
+
- Add ZMQ channel to allow other programs to request instrument parameters
|
|
26
|
+
|
|
27
|
+
### CHANGED
|
|
28
|
+
- changed to src/ layout
|
|
29
|
+
- move setup.{cfg,py} into pyproject.toml
|
|
30
|
+
- require python >= 3.9 (minimum version for numpy)
|
|
31
|
+
- updated pre-commit versions and run on all files
|
|
32
|
+
- updated pipelines and readthedocs python versions
|
|
33
|
+
- MWController: changed order of widgets
|
|
34
|
+
- MultiPowerSupply: better on/off buttons, better status icons
|
|
35
|
+
|
|
36
|
+
## [3.0.1] 2023-02-18
|
|
37
|
+
|
|
38
|
+
### CHANGED
|
|
39
|
+
- updated docs
|
|
40
|
+
- Removed auto_update from HCPushButton since it connects to a command not a parameter
|
|
41
|
+
|
|
42
|
+
### FIXED
|
|
43
|
+
- HCLabel: force convertion to string, so that call to .rjust works all the time
|
|
44
|
+
- TPI: several fixes
|
|
45
|
+
- Fix quering for a serial device
|
|
46
|
+
|
|
10
47
|
## [3.0.0] 2023-02-18
|
|
11
48
|
|
|
12
49
|
The main new feature is updating to pyqt6.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: hardware-control
|
|
3
|
+
Version: 3.1.0
|
|
4
|
+
Author-email: Arun Persaud <apersaud@lbl.gov>, Ariel Amsellem <ajamsellem@lbl.gov>, Brian Mak <brianmak@lbl.gov>, Mauricio Ayllon Unzueta <mayllonu@lbl.gov>, Brian Wynne <bwynne@lbl.gov>, Grant Giesbrecht <ggiesbrecht@lbl.gov>, Timo Bauer <TimoBauer@lbl.gov>, Zhihao Qin <zqin@lbl.gov>, Arfon Smith <arfon.smith@gmail.com>, Sara Matsuo Saib <smsaib@lbl.gov>, Caroline Egan <cegan@lbl.gov>, Schuyler Freeman <skyfreeman@lbl.gov>
|
|
5
|
+
License: Copyright (c) 2019, The Regents of the University of California,
|
|
6
|
+
through Lawrence Berkeley National Laboratory (subject to receipt of
|
|
7
|
+
any required approvals from the U.S. Dept. of Energy). All rights
|
|
8
|
+
reserved.
|
|
9
|
+
|
|
10
|
+
Redistribution and use in source and binary forms, with or without
|
|
11
|
+
modification, are permitted provided that the following conditions are
|
|
12
|
+
met:
|
|
13
|
+
|
|
14
|
+
(1) Redistributions of source code must retain the above copyright
|
|
15
|
+
notice, this list of conditions and the following disclaimer.
|
|
16
|
+
|
|
17
|
+
(2) Redistributions in binary form must reproduce the above copyright
|
|
18
|
+
notice, this list of conditions and the following disclaimer in the
|
|
19
|
+
documentation and/or other materials provided with the distribution.
|
|
20
|
+
|
|
21
|
+
(3) Neither the name of the University of California, Lawrence
|
|
22
|
+
Berkeley National Laboratory, U.S. Dept. of Energy, nor the names of
|
|
23
|
+
its contributors may be used to endorse or promote products derived
|
|
24
|
+
from this software without specific prior written permission.
|
|
25
|
+
|
|
26
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
27
|
+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
28
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
29
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
30
|
+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
31
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
32
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
33
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
34
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
35
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
36
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
37
|
+
|
|
38
|
+
You are under no obligation whatsoever to provide any bug fixes,
|
|
39
|
+
patches, or upgrades to the features, functionality or performance of
|
|
40
|
+
the source code ("Enhancements") to anyone; however, if you choose to
|
|
41
|
+
make your Enhancements available either publicly, or directly to
|
|
42
|
+
Lawrence Berkeley National Laboratory, without imposing a separate
|
|
43
|
+
written license agreement for such Enhancements, then you hereby grant
|
|
44
|
+
the following license: a non-exclusive, royalty-free perpetual license
|
|
45
|
+
to install, use, modify, prepare derivative works, incorporate into
|
|
46
|
+
other computer software, distribute, and sublicense such enhancements
|
|
47
|
+
or derivative works thereof, in binary and source code form.
|
|
48
|
+
|
|
49
|
+
Project-URL: documentation, https://hardware-control.readthedocs.io/
|
|
50
|
+
Project-URL: homepage, https://bitbucket.org/berkeleylab/hardware-control
|
|
51
|
+
Project-URL: issues, https://bitbucket.org/berkeleylab/hardware-control/issues
|
|
52
|
+
Project-URL: changelog, https://bitbucket.org/berkeleylab/hardware-control/src/main/CHANGELOG.md
|
|
53
|
+
Classifier: Programming Language :: Python :: 3
|
|
54
|
+
Classifier: Operating System :: OS Independent
|
|
55
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
56
|
+
Classifier: License :: OSI Approved :: BSD License
|
|
57
|
+
Classifier: Intended Audience :: Science/Research
|
|
58
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
59
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
60
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
61
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
62
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
63
|
+
Requires-Python: >=3.9
|
|
64
|
+
Description-Content-Type: text/markdown
|
|
65
|
+
License-File: LICENSE
|
|
66
|
+
Requires-Dist: docopt
|
|
67
|
+
Requires-Dist: matplotlib
|
|
68
|
+
Requires-Dist: nidaqmx>=0.6.4
|
|
69
|
+
Requires-Dist: numpy
|
|
70
|
+
Requires-Dist: pandas
|
|
71
|
+
Requires-Dist: picoscope
|
|
72
|
+
Requires-Dist: pymodbus>=3.0.0
|
|
73
|
+
Requires-Dist: PyQt6
|
|
74
|
+
Requires-Dist: pyqtgraph
|
|
75
|
+
Requires-Dist: pytest
|
|
76
|
+
Requires-Dist: PyVISA
|
|
77
|
+
Requires-Dist: qtconsole>=5.3.2
|
|
78
|
+
Requires-Dist: recommonmark
|
|
79
|
+
Requires-Dist: scipy
|
|
80
|
+
Requires-Dist: setuptools
|
|
81
|
+
Requires-Dist: setuptools-scm
|
|
82
|
+
Requires-Dist: Sphinx
|
|
83
|
+
Requires-Dist: sphinx_rtd_theme
|
|
84
|
+
Requires-Dist: pyzmq
|
|
85
|
+
|
|
86
|
+
[](https://readthedocs.org/projects/hardware-control/)
|
|
87
|
+
[](https://badge.fury.io/py/hardware-control)
|
|
88
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
89
|
+
[](https://github.com/psf/black)
|
|
90
|
+
[](https://doi.org/10.21105/joss.02688)
|
|
91
|
+
|
|
92
|
+
## What is this repository for?
|
|
93
|
+
|
|
94
|
+
The goal is to provide reusable code for hardware control using python and Qt.
|
|
95
|
+
|
|
96
|
+
Documentation can be found at [Read the Docs](https://readthedocs.org/projects/hardware-control/).
|
|
97
|
+
|
|
98
|
+
## How do I get set up?
|
|
99
|
+
|
|
100
|
+
The easiest way is to pip install the software:
|
|
101
|
+
|
|
102
|
+
pip install hardware-control
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
If you want to have a quick look at some basic functionality, you can
|
|
107
|
+
run the demos in the example directory. If you have the same hardware
|
|
108
|
+
that is used in the example, you will have to update the connection
|
|
109
|
+
address, e.g. ip address. Otherwise, you can still run the examples by
|
|
110
|
+
providing the `--dummy` command line argument that will simulate
|
|
111
|
+
instrument output. The logging level can also be redirected to the
|
|
112
|
+
terminal using `--console` and the log-level changed by providing
|
|
113
|
+
`--info` or `--debug` options on the command line.
|
|
114
|
+
|
|
115
|
+
## Tests
|
|
116
|
+
|
|
117
|
+
We use `pytest` to provide some simple tests for some of the
|
|
118
|
+
functionallity of the package. However, to check if an instrument is
|
|
119
|
+
really working, one needs to have the instrument connected, which
|
|
120
|
+
makes testing harder. When the instruments are not available some
|
|
121
|
+
functionallity, such as the Qt layout, can still be tested using
|
|
122
|
+
"--dummy" mode. In this mode instrument parameters can return a
|
|
123
|
+
predefined value or the result of a function.
|
|
124
|
+
|
|
125
|
+
To run the tests use:
|
|
126
|
+
|
|
127
|
+
python -m pytest
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
## Contribution guidelines
|
|
131
|
+
|
|
132
|
+
Feel free to contribute new drivers for hardware or other changes.
|
|
133
|
+
|
|
134
|
+
We use black to format the code, so please format your code
|
|
135
|
+
accordingly. The easiest way to achieve this is to install pre-commit
|
|
136
|
+
and use the config file we provide:
|
|
137
|
+
|
|
138
|
+
pip install pre-commit
|
|
139
|
+
# cd into repo
|
|
140
|
+
pre-commit install
|
|
141
|
+
|
|
142
|
+
## How to cite this package
|
|
143
|
+
|
|
144
|
+
Please use the following [citation](https://doi.org/10.21105/joss.02688).
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
@article{Giesbrecht2022,
|
|
148
|
+
doi = {10.21105/joss.02688},
|
|
149
|
+
url = {https://doi.org/10.21105/joss.02688},
|
|
150
|
+
year = {2022},
|
|
151
|
+
publisher = {The Open Journal},
|
|
152
|
+
volume = {7},
|
|
153
|
+
number = {72},
|
|
154
|
+
pages = {2688},
|
|
155
|
+
author = {Grant Giesbrecht and Ariel Amsellem and Timo Bauer and Brian Mak and Brian Wynne and Zhihao Qin and Arun Persaud},
|
|
156
|
+
title = {Hardware-Control: Instrument control and automation package},
|
|
157
|
+
journal = {Journal of Open Source Software}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Who do I talk to?
|
|
162
|
+
|
|
163
|
+
If you have questions, please contact Arun at apersaud@lbl.gov.
|
|
164
|
+
|
|
165
|
+
## Copyright and License
|
|
166
|
+
|
|
167
|
+
See the files COPYRIGHT and LICENSE in the top level directory
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
pipelines:
|
|
2
|
+
default:
|
|
3
|
+
- parallel:
|
|
4
|
+
- step:
|
|
5
|
+
name: Test_3.9
|
|
6
|
+
image: python:3.9
|
|
7
|
+
caches:
|
|
8
|
+
- pip
|
|
9
|
+
script:
|
|
10
|
+
- apt-get update -y
|
|
11
|
+
- apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
|
|
12
|
+
- pip install -U pip
|
|
13
|
+
- pip install .
|
|
14
|
+
- pytest -v tests/* --junitxml=test-reports/report.xml
|
|
15
|
+
- step:
|
|
16
|
+
name: Test_3.10
|
|
17
|
+
image: python:3.10
|
|
18
|
+
caches:
|
|
19
|
+
- pip
|
|
20
|
+
script:
|
|
21
|
+
- apt-get update -y
|
|
22
|
+
- apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
|
|
23
|
+
- pip install -U pip
|
|
24
|
+
- pip install .
|
|
25
|
+
- pytest -v tests/* --junitxml=test-reports/report.xml
|
|
26
|
+
- step:
|
|
27
|
+
name: Test_3.11
|
|
28
|
+
image: python:3.11
|
|
29
|
+
caches:
|
|
30
|
+
- pip
|
|
31
|
+
script:
|
|
32
|
+
- apt-get update -y
|
|
33
|
+
- apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
|
|
34
|
+
- pip install -U pip
|
|
35
|
+
- pip install .
|
|
36
|
+
- pytest -v tests/* --junitxml=test-reports/report.xml
|
|
37
|
+
- step:
|
|
38
|
+
name: Test_3.12
|
|
39
|
+
image: python:3.12
|
|
40
|
+
caches:
|
|
41
|
+
- pip
|
|
42
|
+
script:
|
|
43
|
+
- apt-get update -y
|
|
44
|
+
- apt-get install -y python3-pyqt6 mesa-common-dev libglu1-mesa-dev
|
|
45
|
+
- pip install -U pip
|
|
46
|
+
- pip install .
|
|
47
|
+
- pytest -v tests/* --junitxml=test-reports/report.xml
|
|
@@ -7,6 +7,43 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.1.0] 2024-04-13
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- automatic update in App.py of instrument parameters was not working correctly
|
|
14
|
+
- Keysight 3600 power supply UI: remove on/off buttons for E3631A mode (only global on/off available)
|
|
15
|
+
- Adam6015: detect offline mode in case command times out
|
|
16
|
+
- plotbase: define variables in init
|
|
17
|
+
- Picoscope: setting larger voltage ranges
|
|
18
|
+
- MWController: added display of actual power level
|
|
19
|
+
- TPI: by default show -9 to +9 dBm, option to override this
|
|
20
|
+
- TPI: fix use in dummy mode
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
- Keysight 3600 power supply: add readout of persona
|
|
24
|
+
- Picoscope: readout of scope parameters
|
|
25
|
+
- Add ZMQ channel to allow other programs to request instrument parameters
|
|
26
|
+
|
|
27
|
+
### CHANGED
|
|
28
|
+
- changed to src/ layout
|
|
29
|
+
- move setup.{cfg,py} into pyproject.toml
|
|
30
|
+
- require python >= 3.9 (minimum version for numpy)
|
|
31
|
+
- updated pre-commit versions and run on all files
|
|
32
|
+
- updated pipelines and readthedocs python versions
|
|
33
|
+
- MWController: changed order of widgets
|
|
34
|
+
- MultiPowerSupply: better on/off buttons, better status icons
|
|
35
|
+
|
|
36
|
+
## [3.0.1] 2023-02-18
|
|
37
|
+
|
|
38
|
+
### CHANGED
|
|
39
|
+
- updated docs
|
|
40
|
+
- Removed auto_update from HCPushButton since it connects to a command not a parameter
|
|
41
|
+
|
|
42
|
+
### FIXED
|
|
43
|
+
- HCLabel: force convertion to string, so that call to .rjust works all the time
|
|
44
|
+
- TPI: several fixes
|
|
45
|
+
- Fix quering for a serial device
|
|
46
|
+
|
|
10
47
|
## [3.0.0] 2023-02-18
|
|
11
48
|
|
|
12
49
|
The main new feature is updating to pyqt6.
|
|
Binary file
|
|
@@ -4,7 +4,7 @@ Welcome to Hardware-control's documentation!
|
|
|
4
4
|
Hardware-control is a Python package designed to simplify creating
|
|
5
5
|
instrument control programs (for example for power supplies,
|
|
6
6
|
oscilloscopes, etc.). By using reusable front ends (widgets) and
|
|
7
|
-
instrument drivers
|
|
7
|
+
instrument drivers. Hardware-control tries to minimize the
|
|
8
8
|
effort and code required to communicate with instruments in the lab.
|
|
9
9
|
|
|
10
10
|
Hardware-control uses a few basic constructs to organize its
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Trinity Power
|
|
2
|
+
=============
|
|
3
|
+
|
|
4
|
+
hardware_control.instruments.trinity_power.tpi module
|
|
5
|
+
-----------------------------------------------------
|
|
6
|
+
|
|
7
|
+
.. automodule:: hardware_control.instruments.trinity_power.TPI
|
|
8
|
+
:members:
|
|
9
|
+
:undoc-members:
|
|
10
|
+
:show-inheritance:
|
|
11
|
+
|
|
@@ -5,11 +5,11 @@ Plans for the future include (but are not limited to):
|
|
|
5
5
|
- Adding more instrument drivers
|
|
6
6
|
- Expanding the instrument drivers we have to implement more parameters/commands
|
|
7
7
|
- Modifying the auto-update functionality of the main app to be more flexible, e.g. custom timeout for each instrument
|
|
8
|
-
- Looking into using binary ZMQ messages and sending for example numpy arrays over ZMQ instead of strings
|
|
8
|
+
- Looking into using binary ZMQ messages and sending for example numpy arrays over ZMQ instead of strings (e.g., using msgpack)
|
|
9
9
|
- Create a custom widget that shows all logging messages and lets you filter them on the fly (by loglevel and instrument driver, etc.)
|
|
10
10
|
- Code improvement:
|
|
11
11
|
- adding more type hints
|
|
12
12
|
- adding more tests (e.g. figuring out how to test Qt apps)
|
|
13
|
-
- improving the code base (running linters such as pylint)
|
|
14
|
-
- update to Qt6
|
|
13
|
+
- improving the code base (running linters such as pylint, ruff)
|
|
15
14
|
- replace some logging instances with raising an exception where appropiate (currently we only use logger.error)
|
|
15
|
+
- in the instrument drivers switch from commands (no argument) and parameters (one argument) to something that can handle multiple arguments
|
|
@@ -111,6 +111,9 @@ provide a pull request.
|
|
|
111
111
|
* - `Siglent SDG Series <https://www.siglent.eu/waveform-generators>`_ (LAN)
|
|
112
112
|
- .. image:: /images/SDG1000X.png
|
|
113
113
|
:height: 100
|
|
114
|
+
* - `Trinity Power TPI <https://rf-consultant.com/products/tpi-1001-b-signal-generator/>`_ (USB)
|
|
115
|
+
- .. image:: /images/TPI.jpg
|
|
116
|
+
:height: 100
|
|
114
117
|
|
|
115
118
|
|
|
116
119
|
- IOModule:
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "setuptools_scm[toml]>=6.2"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "hardware-control"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "Arun Persaud", email = "apersaud@lbl.gov" },
|
|
10
|
+
{ name = "Ariel Amsellem", email = "ajamsellem@lbl.gov" },
|
|
11
|
+
{ name = "Brian Mak", email = "brianmak@lbl.gov" },
|
|
12
|
+
{ name = "Mauricio Ayllon Unzueta", email = "mayllonu@lbl.gov" },
|
|
13
|
+
{ name = "Brian Wynne", email = "bwynne@lbl.gov" },
|
|
14
|
+
{ name = "Grant Giesbrecht", email = "ggiesbrecht@lbl.gov" },
|
|
15
|
+
{ name = "Timo Bauer", email = "TimoBauer@lbl.gov" },
|
|
16
|
+
{ name = "Zhihao Qin", email = "zqin@lbl.gov" },
|
|
17
|
+
{ name = "Arfon Smith", email = "arfon.smith@gmail.com" },
|
|
18
|
+
{ name = "Sara Matsuo Saib", email = "smsaib@lbl.gov" },
|
|
19
|
+
{ name = "Caroline Egan", email = "cegan@lbl.gov" },
|
|
20
|
+
{ name = "Schuyler Freeman", email = "skyfreeman@lbl.gov" },
|
|
21
|
+
]
|
|
22
|
+
readme = "README.md"
|
|
23
|
+
license = {file = "LICENSE"}
|
|
24
|
+
requires-python = ">=3.9"
|
|
25
|
+
dependencies = [
|
|
26
|
+
"docopt",
|
|
27
|
+
"matplotlib",
|
|
28
|
+
"nidaqmx >= 0.6.4",
|
|
29
|
+
"numpy",
|
|
30
|
+
"pandas",
|
|
31
|
+
"picoscope",
|
|
32
|
+
"pymodbus >= 3.0.0",
|
|
33
|
+
"PyQt6",
|
|
34
|
+
"pyqtgraph",
|
|
35
|
+
"pytest",
|
|
36
|
+
"PyVISA",
|
|
37
|
+
"qtconsole >= 5.3.2",
|
|
38
|
+
"recommonmark",
|
|
39
|
+
"scipy",
|
|
40
|
+
"setuptools",
|
|
41
|
+
"setuptools-scm",
|
|
42
|
+
"Sphinx",
|
|
43
|
+
"sphinx_rtd_theme",
|
|
44
|
+
"pyzmq",
|
|
45
|
+
]
|
|
46
|
+
classifiers = [
|
|
47
|
+
"Programming Language :: Python :: 3",
|
|
48
|
+
"Operating System :: OS Independent",
|
|
49
|
+
"Development Status :: 5 - Production/Stable",
|
|
50
|
+
"License :: OSI Approved :: BSD License",
|
|
51
|
+
"Intended Audience :: Science/Research",
|
|
52
|
+
"Programming Language :: Python :: 3.9",
|
|
53
|
+
"Programming Language :: Python :: 3.10",
|
|
54
|
+
"Programming Language :: Python :: 3.11",
|
|
55
|
+
"Programming Language :: Python :: 3.12",
|
|
56
|
+
"Topic :: Scientific/Engineering :: Physics",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
[project.urls]
|
|
60
|
+
documentation = "https://hardware-control.readthedocs.io/"
|
|
61
|
+
homepage = "https://bitbucket.org/berkeleylab/hardware-control"
|
|
62
|
+
issues = "https://bitbucket.org/berkeleylab/hardware-control/issues"
|
|
63
|
+
changelog = "https://bitbucket.org/berkeleylab/hardware-control/src/main/CHANGELOG.md"
|
|
64
|
+
|
|
65
|
+
[tool.setuptools.packages.find]
|
|
66
|
+
where = ["src"]
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.package-data]
|
|
69
|
+
"*" = ["icons/*svg"]
|
|
70
|
+
|
|
71
|
+
[tool.setuptools_scm]
|
|
72
|
+
write_to = "src/hardware_control/_version.py"
|
|
73
|
+
|
|
74
|
+
[tool.pylint.FORMAT]
|
|
75
|
+
max-line-length="88"
|
|
76
|
+
|
|
77
|
+
[tool.pylint."MESSAGES CONTROL"]
|
|
78
|
+
# bad-continuation: Black does the job, no need to check.
|
|
79
|
+
disable = "bad-continuation, logging-fstring-interpolation, line-too-long"
|
|
80
|
+
|
|
81
|
+
[tool.pylint.MASTER]
|
|
82
|
+
extension-pkg-whitelist="PyQt6"
|
|
83
|
+
jobs=4
|
|
84
|
+
|
|
85
|
+
[tool.pylint.TYPECHECK]
|
|
86
|
+
# zmq.{LINGER,REQ,ROUTER,NOBLOCK} are dynamically generated and so pylint
|
|
87
|
+
# doesn't see them, causing false positives.
|
|
88
|
+
generated-members=[
|
|
89
|
+
"REQ",
|
|
90
|
+
"REP",
|
|
91
|
+
"RCVTIMEO",
|
|
92
|
+
"PUB",
|
|
93
|
+
"SUB",
|
|
94
|
+
"NOBLOCK",
|
|
95
|
+
"AF_INET",
|
|
96
|
+
"SOCK_STREAM",
|
|
97
|
+
"TCP_NODELAY",
|
|
98
|
+
"SOCK_DGRAM",
|
|
99
|
+
"IPPROTO_TCP",
|
|
100
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# file generated by setuptools_scm
|
|
2
|
+
# don't change, don't track in version control
|
|
3
|
+
TYPE_CHECKING = False
|
|
4
|
+
if TYPE_CHECKING:
|
|
5
|
+
from typing import Tuple, Union
|
|
6
|
+
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
7
|
+
else:
|
|
8
|
+
VERSION_TUPLE = object
|
|
9
|
+
|
|
10
|
+
version: str
|
|
11
|
+
__version__: str
|
|
12
|
+
__version_tuple__: VERSION_TUPLE
|
|
13
|
+
version_tuple: VERSION_TUPLE
|
|
14
|
+
|
|
15
|
+
__version__ = version = '3.1.0'
|
|
16
|
+
__version_tuple__ = version_tuple = (3, 1, 0)
|
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
import threading
|
|
6
6
|
import time
|
|
7
|
-
from typing import Union, Optional, Callable, Any
|
|
7
|
+
from typing import Union, Optional, Callable, Any
|
|
8
8
|
from datetime import datetime
|
|
9
9
|
|
|
10
10
|
from PyQt6.QtWidgets import QApplication
|
|
@@ -100,8 +100,12 @@ class App(QApplication):
|
|
|
100
100
|
self.ipaddress = ipaddress
|
|
101
101
|
self.zmq_publisher_address = f"tcp://{self.ipaddress}:1234"
|
|
102
102
|
self.zmq_context = zmq.Context()
|
|
103
|
+
# to talk to all the instruments
|
|
103
104
|
self.zmq_publisher = self.zmq_context.socket(zmq.PUB)
|
|
104
105
|
self.zmq_publisher.bind(self.zmq_publisher_address)
|
|
106
|
+
# to handle queries from other programs
|
|
107
|
+
self.zmq_info = self.zmq_context.socket(zmq.REP)
|
|
108
|
+
self.zmq_info.bind(f"tcp://{self.ipaddress}:1235")
|
|
105
109
|
|
|
106
110
|
self.dummy = dummy
|
|
107
111
|
self.additional_save_formats = {}
|
|
@@ -123,6 +127,7 @@ class App(QApplication):
|
|
|
123
127
|
# a timer to check ZMQ messages
|
|
124
128
|
self.zmq_timer = QTimer(self)
|
|
125
129
|
self.zmq_timer.timeout.connect(self.parse_message_from_instruments)
|
|
130
|
+
self.zmq_timer.timeout.connect(self.handle_request)
|
|
126
131
|
self.zmq_timer.start(100)
|
|
127
132
|
|
|
128
133
|
# a timer to requests updates from instruments
|
|
@@ -143,6 +148,51 @@ class App(QApplication):
|
|
|
143
148
|
for t in self.threads:
|
|
144
149
|
t.join()
|
|
145
150
|
|
|
151
|
+
def handle_request(self):
|
|
152
|
+
"""Handle requests from other programs.
|
|
153
|
+
|
|
154
|
+
This provides an interface for other programs to get
|
|
155
|
+
values. In principle this could also enable remote control in
|
|
156
|
+
the future.
|
|
157
|
+
|
|
158
|
+
To make use of this, the other program has to setup a ZMQ REQ
|
|
159
|
+
socket. For example using:
|
|
160
|
+
|
|
161
|
+
> import zmq
|
|
162
|
+
> c = zmq.Context()
|
|
163
|
+
> s = c.socket(zmq.REQ)
|
|
164
|
+
>
|
|
165
|
+
> s.connect("tcp://127.0.0.1:1235")
|
|
166
|
+
> s.send_string('get_instrument_parameter(ADAM_6024,CH0_READ_VOLTAGE)')
|
|
167
|
+
>
|
|
168
|
+
> s.recv_string()
|
|
169
|
+
> '1.0'
|
|
170
|
+
|
|
171
|
+
We implement the get_instrument_parameter function and perhaps should
|
|
172
|
+
also support similar other function in the future.
|
|
173
|
+
|
|
174
|
+
The value will be returned directly as a string.
|
|
175
|
+
|
|
176
|
+
"""
|
|
177
|
+
while True:
|
|
178
|
+
try:
|
|
179
|
+
msg = self.zmq_info.recv_string(flags=zmq.NOBLOCK)
|
|
180
|
+
logger.debug(f"App got request '{msg}'")
|
|
181
|
+
|
|
182
|
+
if msg.startswith("get_instrument_parameter"):
|
|
183
|
+
msg = msg.replace("get_instrument_parameter", "")
|
|
184
|
+
msg = msg[1:-1] # remove ()
|
|
185
|
+
|
|
186
|
+
name, parameter = msg.split(",")
|
|
187
|
+
name = name.strip().replace("'", "")
|
|
188
|
+
parameter = parameter.strip().replace("'", "")
|
|
189
|
+
|
|
190
|
+
value = self.get_instrument_parameter(name, parameter)
|
|
191
|
+
|
|
192
|
+
self.zmq_info.send_string(str(value))
|
|
193
|
+
except zmq.ZMQError:
|
|
194
|
+
break
|
|
195
|
+
|
|
146
196
|
@ensure_instrument_exists
|
|
147
197
|
def register_parameters_and_commands(
|
|
148
198
|
self, instrument: str, read_parameters, set_parameters, commands
|
|
@@ -325,7 +375,7 @@ class App(QApplication):
|
|
|
325
375
|
continue
|
|
326
376
|
online = self.get_instrument_parameter(instrument, "ONLINE")
|
|
327
377
|
if online is None or online == "False":
|
|
328
|
-
|
|
378
|
+
continue
|
|
329
379
|
if callable(parameter_or_function):
|
|
330
380
|
parameter_or_function()
|
|
331
381
|
else:
|
|
@@ -617,11 +667,11 @@ class App(QApplication):
|
|
|
617
667
|
self.additional_save_formats[format_name] = save_fxn
|
|
618
668
|
|
|
619
669
|
@ensure_instrument_exists
|
|
620
|
-
def list_instrument_parameters(self, instrument) ->
|
|
670
|
+
def list_instrument_parameters(self, instrument) -> list[str]:
|
|
621
671
|
"""Compile a list of all the parameters for a specified instrument."""
|
|
622
672
|
return [parameter for parameter in self._data[instrument]]
|
|
623
673
|
|
|
624
|
-
def list_instruments(self) ->
|
|
674
|
+
def list_instruments(self) -> list[str]:
|
|
625
675
|
"""Compile a list of all the instruments in the app."""
|
|
626
676
|
if not self._data:
|
|
627
677
|
return []
|