cgse 2024.7.0__py3-none-any.whl → 2025.0.2__py3-none-any.whl
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.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
A Graphical User Interface for monitoring the LakeShore Temperature Controller.
|
|
3
|
-
|
|
4
|
-
.. todo:: put code in the __main__ section into a main() function, so this GUI
|
|
5
|
-
can be called from another Python process/script.
|
|
6
|
-
"""
|
|
7
|
-
import argparse
|
|
8
|
-
import logging
|
|
9
|
-
|
|
10
|
-
import pyqtgraph as pg
|
|
11
|
-
import sys
|
|
12
|
-
from PyQt5 import QtGui
|
|
13
|
-
from PyQt5.QtCore import QDateTime
|
|
14
|
-
from PyQt5.QtCore import QTimer
|
|
15
|
-
from PyQt5.QtCore import Qt
|
|
16
|
-
from PyQt5.QtGui import QPalette, QIcon
|
|
17
|
-
from PyQt5.QtWidgets import QApplication
|
|
18
|
-
from PyQt5.QtWidgets import QFrame
|
|
19
|
-
from PyQt5.QtWidgets import QGridLayout
|
|
20
|
-
from PyQt5.QtWidgets import QGroupBox
|
|
21
|
-
from PyQt5.QtWidgets import QHBoxLayout
|
|
22
|
-
from PyQt5.QtWidgets import QLabel
|
|
23
|
-
from PyQt5.QtWidgets import QMainWindow
|
|
24
|
-
from PyQt5.QtWidgets import QVBoxLayout
|
|
25
|
-
|
|
26
|
-
from egse.config import find_file
|
|
27
|
-
from egse.gui import show_warning_message
|
|
28
|
-
from egse.gui.stripchart import StripChart
|
|
29
|
-
from egse.observer import Observable
|
|
30
|
-
from egse.observer import Observer
|
|
31
|
-
from egse.resource import get_resource
|
|
32
|
-
from egse.settings import Settings
|
|
33
|
-
from egse.state import UnknownStateError
|
|
34
|
-
from egse.tempcontrol.lakeshore.lsci import LakeShoreController
|
|
35
|
-
from egse.tempcontrol.lakeshore.lsci import LakeShoreProxy
|
|
36
|
-
from egse.tempcontrol.lakeshore.lsci import LakeShoreSimulator
|
|
37
|
-
|
|
38
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
39
|
-
logger = MODULE_LOGGER = logging.getLogger("LSCI- CS")
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class LakeShoreUIView(QMainWindow, Observable):
|
|
43
|
-
def __init__(self,index_):
|
|
44
|
-
super().__init__()
|
|
45
|
-
|
|
46
|
-
# Define those variables that we will need/use in different methods
|
|
47
|
-
|
|
48
|
-
self.temperature_a = None
|
|
49
|
-
self.clear_action = None
|
|
50
|
-
self.reconnect_action = None
|
|
51
|
-
self.toolbar = None
|
|
52
|
-
self.index = index_
|
|
53
|
-
self.stripchart = None
|
|
54
|
-
|
|
55
|
-
self.setGeometry(300, 300, 1000, 500)
|
|
56
|
-
self.setWindowTitle(f"LakeShore {self.index} Controller")
|
|
57
|
-
|
|
58
|
-
self.init_gui()
|
|
59
|
-
|
|
60
|
-
def create_channel_group(self):
|
|
61
|
-
|
|
62
|
-
group_box = QGroupBox("LakeShore Channel A")
|
|
63
|
-
|
|
64
|
-
# Create the label fields that display the current temperature
|
|
65
|
-
|
|
66
|
-
grid_show = QGridLayout()
|
|
67
|
-
|
|
68
|
-
grid_show.addWidget(QLabel("Channel A "), 0, 0)
|
|
69
|
-
|
|
70
|
-
self.temperature_a = QLabel(self)
|
|
71
|
-
self.temperature_a.setAlignment(Qt.AlignRight)
|
|
72
|
-
self.temperature_a.setText("0.000")
|
|
73
|
-
|
|
74
|
-
self.temperature_a.setFont(QtGui.QFont(self.temperature_a.font().family(), 24))
|
|
75
|
-
|
|
76
|
-
grid_show.addWidget(self.temperature_a, 0, 1)
|
|
77
|
-
|
|
78
|
-
grid_show.addWidget(QLabel(" ºC"), 0, 2)
|
|
79
|
-
|
|
80
|
-
grid_show.setColumnStretch(1, 10)
|
|
81
|
-
|
|
82
|
-
# Create the edit text field for setting the position
|
|
83
|
-
|
|
84
|
-
self.stripchart = StripChart(
|
|
85
|
-
labels={"left": ("Temperature", "ºC"), "bottom": ("Time", "d hh:mm:ss")}
|
|
86
|
-
)
|
|
87
|
-
self.stripchart.setInterval(60 * 60 * 12) # 12h of data
|
|
88
|
-
self.stripchart.set_yrange(20, 40)
|
|
89
|
-
|
|
90
|
-
vbox = QVBoxLayout()
|
|
91
|
-
|
|
92
|
-
vbox.addLayout(grid_show)
|
|
93
|
-
vbox.addStretch(1)
|
|
94
|
-
vbox.addWidget(self.stripchart)
|
|
95
|
-
|
|
96
|
-
group_box.setLayout(vbox)
|
|
97
|
-
|
|
98
|
-
return group_box
|
|
99
|
-
|
|
100
|
-
def update_stripchart(self, time, temperature):
|
|
101
|
-
self.stripchart.update(time, temperature)
|
|
102
|
-
|
|
103
|
-
def update_temperature_field(self, temperature):
|
|
104
|
-
self.temperature_a.setText(f"{temperature:.3f}")
|
|
105
|
-
|
|
106
|
-
def init_gui(self):
|
|
107
|
-
|
|
108
|
-
# Switch to using white background and black foreground for pyqtgraph stripcharts
|
|
109
|
-
|
|
110
|
-
pg.setConfigOption("background", "w")
|
|
111
|
-
pg.setConfigOption("foreground", "k")
|
|
112
|
-
|
|
113
|
-
# The main frame in which all the other frames are located, the outer Application frame
|
|
114
|
-
|
|
115
|
-
app_frame = QFrame()
|
|
116
|
-
app_frame.setObjectName("AppFrame")
|
|
117
|
-
|
|
118
|
-
hbox = QHBoxLayout()
|
|
119
|
-
|
|
120
|
-
hbox.addWidget(self.create_channel_group())
|
|
121
|
-
|
|
122
|
-
app_frame.setLayout(hbox)
|
|
123
|
-
|
|
124
|
-
self.setCentralWidget(app_frame)
|
|
125
|
-
|
|
126
|
-
def set_style(self):
|
|
127
|
-
"""
|
|
128
|
-
Set the style for the LakeShoreUI Widget when it is connected to a real
|
|
129
|
-
LakeShore Controller (hardware).
|
|
130
|
-
|
|
131
|
-
This will override the styles that were defined in the styles.qss style file
|
|
132
|
-
that was loaded for the Application.
|
|
133
|
-
"""
|
|
134
|
-
self.setAutoFillBackground(True)
|
|
135
|
-
self.setBackgroundRole(QPalette.Light)
|
|
136
|
-
self.setStyleSheet(
|
|
137
|
-
"""
|
|
138
|
-
QGroupBox {
|
|
139
|
-
border: 1px solid lightGray;
|
|
140
|
-
border-radius: 0px;
|
|
141
|
-
margin-top: 0px;
|
|
142
|
-
padding-top: 10px;
|
|
143
|
-
}
|
|
144
|
-
QGroupBox::title {
|
|
145
|
-
background-color: transparent;
|
|
146
|
-
padding-top: 0px;
|
|
147
|
-
padding-left: 0px;
|
|
148
|
-
}
|
|
149
|
-
"""
|
|
150
|
-
)
|
|
151
|
-
|
|
152
|
-
def set_style_simulator(self):
|
|
153
|
-
"""
|
|
154
|
-
Set the style for the LakeShoreUI Widget when it is connected to a
|
|
155
|
-
LakeSHore Simulator.
|
|
156
|
-
|
|
157
|
-
This will override the styles that were defined in the styles.qss style file
|
|
158
|
-
that was loaded for the Application.
|
|
159
|
-
"""
|
|
160
|
-
self.setAutoFillBackground(True)
|
|
161
|
-
self.setBackgroundRole(QPalette.Dark)
|
|
162
|
-
self.setStyleSheet(
|
|
163
|
-
"""
|
|
164
|
-
QGroupBox {
|
|
165
|
-
border: 1px solid lightGray;
|
|
166
|
-
border-radius: 0px;
|
|
167
|
-
margin-top: 0px;
|
|
168
|
-
padding-top: 10px;
|
|
169
|
-
}
|
|
170
|
-
QGroupBox::title {
|
|
171
|
-
background-color: transparent;
|
|
172
|
-
padding-top: 0px;
|
|
173
|
-
padding-left: 0px;
|
|
174
|
-
}
|
|
175
|
-
"""
|
|
176
|
-
)
|
|
177
|
-
|
|
178
|
-
def set_connection_state(self, state):
|
|
179
|
-
|
|
180
|
-
if state == "connected":
|
|
181
|
-
pass
|
|
182
|
-
elif state == "disconnected":
|
|
183
|
-
pass
|
|
184
|
-
else:
|
|
185
|
-
raise UnknownStateError(
|
|
186
|
-
f"Unknown State ({state}), expected 'connected' or 'disconnected'."
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
class LakeShoreUIModel:
|
|
191
|
-
def __init__(self, type_, index_):
|
|
192
|
-
self.type = type_
|
|
193
|
-
self.index = index_
|
|
194
|
-
if self.type == "proxy":
|
|
195
|
-
self.ls = LakeShoreProxy(self.index)
|
|
196
|
-
elif self.type == "direct":
|
|
197
|
-
self.ls = LakeShoreController()
|
|
198
|
-
elif self.type == "simulator":
|
|
199
|
-
self.ls = LakeShoreSimulator()
|
|
200
|
-
else:
|
|
201
|
-
raise ValueError(
|
|
202
|
-
f"Unknown type of LakeShore implementation passed into the model: {type}"
|
|
203
|
-
)
|
|
204
|
-
|
|
205
|
-
if self.ls is not None:
|
|
206
|
-
logger.debug(f"LakeShoreController {self.index} initialized as {self.ls.__class__.__name__}")
|
|
207
|
-
|
|
208
|
-
def is_simulator(self):
|
|
209
|
-
return self.ls.is_simulator()
|
|
210
|
-
|
|
211
|
-
def is_connected(self):
|
|
212
|
-
if self.type == "proxy":
|
|
213
|
-
return_code = self.ls.ping() and self.ls.is_connected()
|
|
214
|
-
else:
|
|
215
|
-
return_code = self.ls.is_connected()
|
|
216
|
-
|
|
217
|
-
return return_code
|
|
218
|
-
|
|
219
|
-
def get_temperature(self):
|
|
220
|
-
"""Returns the temperature of channel A.
|
|
221
|
-
|
|
222
|
-
Returns:
|
|
223
|
-
the current temperature as a float or nan if no temperature available.
|
|
224
|
-
"""
|
|
225
|
-
temperature = self.ls.get_temperature()
|
|
226
|
-
if temperature is None:
|
|
227
|
-
return float("nan")
|
|
228
|
-
else:
|
|
229
|
-
temperature = float(temperature)
|
|
230
|
-
logger.debug(f"Temperature = {temperature:.3f}")
|
|
231
|
-
return temperature
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
class LakeShoreUIController(Observer):
|
|
235
|
-
def __init__(self, model, view):
|
|
236
|
-
self.model = model
|
|
237
|
-
self.view = view
|
|
238
|
-
self.view.addObserver(self)
|
|
239
|
-
|
|
240
|
-
self.create_timer()
|
|
241
|
-
|
|
242
|
-
if self.model.is_connected():
|
|
243
|
-
|
|
244
|
-
if self.model.is_simulator():
|
|
245
|
-
self.view.set_style_simulator()
|
|
246
|
-
else:
|
|
247
|
-
self.view.set_style()
|
|
248
|
-
|
|
249
|
-
self.view.set_connection_state("connected")
|
|
250
|
-
self.start_timer()
|
|
251
|
-
else:
|
|
252
|
-
self.stop_timer()
|
|
253
|
-
self.view.set_connection_state("disconnected")
|
|
254
|
-
|
|
255
|
-
def create_timer(self):
|
|
256
|
-
"""Create a Timer that will update the States every second."""
|
|
257
|
-
|
|
258
|
-
self.states_capture_timer = QTimer()
|
|
259
|
-
# This is only needed when the Timer needs to run in another Thread
|
|
260
|
-
# self.states_capture_timer.moveToThread(self)
|
|
261
|
-
self.states_capture_timer.timeout.connect(self.update_values)
|
|
262
|
-
self.states_capture_timer.setInterval(300)
|
|
263
|
-
|
|
264
|
-
def start_timer(self):
|
|
265
|
-
self.states_capture_timer.start()
|
|
266
|
-
|
|
267
|
-
def stop_timer(self):
|
|
268
|
-
self.states_capture_timer.stop()
|
|
269
|
-
|
|
270
|
-
def update_values(self):
|
|
271
|
-
|
|
272
|
-
# This method should not be called when not connected, by design!
|
|
273
|
-
|
|
274
|
-
temperature = self.model.get_temperature()
|
|
275
|
-
self.view.update_temperature_field(temperature)
|
|
276
|
-
self.view.update_stripchart(QDateTime.currentMSecsSinceEpoch(), temperature)
|
|
277
|
-
|
|
278
|
-
def update(self, changed_object):
|
|
279
|
-
|
|
280
|
-
text = changed_object.text()
|
|
281
|
-
|
|
282
|
-
if text == "Reconnect":
|
|
283
|
-
|
|
284
|
-
if changed_object.isChecked():
|
|
285
|
-
MODULE_LOGGER.debug("Reconnecting the Huber model.")
|
|
286
|
-
if self.model.reconnect():
|
|
287
|
-
self.view.set_connection_state("connected")
|
|
288
|
-
if not self.model.has_commands():
|
|
289
|
-
self.model.load_commands()
|
|
290
|
-
self.start_timer()
|
|
291
|
-
else:
|
|
292
|
-
self.view.reconnect_action.setChecked(False)
|
|
293
|
-
else:
|
|
294
|
-
MODULE_LOGGER.debug("Disconnecting the Huber model.")
|
|
295
|
-
self.stop_timer()
|
|
296
|
-
self.model.disconnect()
|
|
297
|
-
self.view.set_connection_state("disconnected")
|
|
298
|
-
|
|
299
|
-
return
|
|
300
|
-
|
|
301
|
-
if text == "ClearErrors":
|
|
302
|
-
self.model.clearError()
|
|
303
|
-
|
|
304
|
-
if text == "Reset":
|
|
305
|
-
pass
|
|
306
|
-
|
|
307
|
-
def do(self, actions):
|
|
308
|
-
|
|
309
|
-
for action, value in actions.items():
|
|
310
|
-
MODULE_LOGGER.debug(f"do {action} with {value}")
|
|
311
|
-
if action == "goto":
|
|
312
|
-
axis, position = value
|
|
313
|
-
MODULE_LOGGER.debug(f"do: goto({axis}:{type(axis)}, {position}:{type(position)})")
|
|
314
|
-
self.model.goto(axis, position)
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
def parse_arguments():
|
|
318
|
-
"""
|
|
319
|
-
Prepare the arguments that are specific for this application.
|
|
320
|
-
"""
|
|
321
|
-
parser = argparse.ArgumentParser()
|
|
322
|
-
|
|
323
|
-
parser.add_argument(
|
|
324
|
-
"--index",
|
|
325
|
-
action="store",
|
|
326
|
-
help="Select LakeShore index to connected",
|
|
327
|
-
default="1",
|
|
328
|
-
)
|
|
329
|
-
|
|
330
|
-
parser.add_argument(
|
|
331
|
-
"--type",
|
|
332
|
-
dest="type",
|
|
333
|
-
action="store",
|
|
334
|
-
choices={"proxy", "simulator", "direct"},
|
|
335
|
-
help="Specify the implementation you want to connect to.",
|
|
336
|
-
default="proxy",
|
|
337
|
-
)
|
|
338
|
-
parser.add_argument(
|
|
339
|
-
"--profile",
|
|
340
|
-
default=False,
|
|
341
|
-
action="store_true",
|
|
342
|
-
help="Enable info logging messages with method profile information.",
|
|
343
|
-
)
|
|
344
|
-
|
|
345
|
-
args = parser.parse_args()
|
|
346
|
-
return args
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
def main():
|
|
350
|
-
#lock_file = QLockFile(str(Path("~/lsci_ui.app.lock").expanduser()))
|
|
351
|
-
STYLES_LOCATION = find_file("styles.qss", in_dir="egse/gui")
|
|
352
|
-
|
|
353
|
-
args = list(sys.argv)
|
|
354
|
-
args[1:1] = ["-stylesheet", str(STYLES_LOCATION)]
|
|
355
|
-
|
|
356
|
-
app = QApplication(args)
|
|
357
|
-
app.setWindowIcon(QIcon(str(get_resource(":/icons/temperature-control.svg"))))
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
args = parse_arguments()
|
|
361
|
-
|
|
362
|
-
if args.profile:
|
|
363
|
-
Settings.set_profiling(True)
|
|
364
|
-
|
|
365
|
-
if args.type == "proxy":
|
|
366
|
-
proxy = LakeShoreProxy(args.index)
|
|
367
|
-
if not proxy.ping():
|
|
368
|
-
description = "Could not connect to Temperature Control Control Server"
|
|
369
|
-
info_text = (
|
|
370
|
-
"The GUI will start, but the connection button will show a disconnected state. "
|
|
371
|
-
"Please check if the Control Server is running and start the server if needed. "
|
|
372
|
-
"Otherwise, check if the correct HOSTNAME for the control server is set in the "
|
|
373
|
-
"Settings.yaml "
|
|
374
|
-
"configuration file."
|
|
375
|
-
)
|
|
376
|
-
|
|
377
|
-
show_warning_message(description, info_text)
|
|
378
|
-
view = LakeShoreUIView(args.index)
|
|
379
|
-
model = LakeShoreUIModel(args.type,args.index)
|
|
380
|
-
controller = LakeShoreUIController(model, view)
|
|
381
|
-
|
|
382
|
-
view.show()
|
|
383
|
-
sys.exit(app.exec_())
|
|
384
|
-
|
|
385
|
-
if __name__ == "__main__":
|
|
386
|
-
|
|
387
|
-
main()
|
egse/tempcontrol/ni/__init__.py
DELETED
|
File without changes
|
egse/tempcontrol/spid/spid.py
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
from random import seed, randint
|
|
3
|
-
from egse.command import ClientServerCommand
|
|
4
|
-
from egse.decorators import dynamic_interface
|
|
5
|
-
from egse.device import DeviceInterface
|
|
6
|
-
from egse.proxy import Proxy
|
|
7
|
-
from egse.settings import Settings
|
|
8
|
-
from egse.zmq_ser import connect_address
|
|
9
|
-
|
|
10
|
-
logger = logging.getLogger(__name__)
|
|
11
|
-
|
|
12
|
-
CTRL_SETTINGS = Settings.load("SPID Control Server")
|
|
13
|
-
DEVICE_SETTINGS = Settings.load(filename='spid.yaml')
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class PidError(Exception):
|
|
17
|
-
pass
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class PidCommand(ClientServerCommand):
|
|
21
|
-
def get_cmd_string(self, *args, **kwargs):
|
|
22
|
-
return super().get_cmd_string(*args, **kwargs)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class PidInterface(DeviceInterface):
|
|
26
|
-
""" PID base class."""
|
|
27
|
-
|
|
28
|
-
@dynamic_interface
|
|
29
|
-
def set_temperature(self, heater_index, setpoint_temperature):
|
|
30
|
-
""" PID setpoint temperature. """
|
|
31
|
-
return NotImplemented
|
|
32
|
-
|
|
33
|
-
@dynamic_interface
|
|
34
|
-
def get_temperature(self, heater_index):
|
|
35
|
-
return NotImplemented
|
|
36
|
-
|
|
37
|
-
@dynamic_interface
|
|
38
|
-
def enable(self, channel):
|
|
39
|
-
return NotImplemented
|
|
40
|
-
|
|
41
|
-
@dynamic_interface
|
|
42
|
-
def disable(self, channel):
|
|
43
|
-
return NotImplemented
|
|
44
|
-
|
|
45
|
-
@dynamic_interface
|
|
46
|
-
def get_running(self, channel):
|
|
47
|
-
return NotImplemented
|
|
48
|
-
|
|
49
|
-
@dynamic_interface
|
|
50
|
-
def set_pid_parameters(self, channel, Kp, Ki, Kd, int_max=1000, int_min=0, reset=True):
|
|
51
|
-
return NotImplemented
|
|
52
|
-
|
|
53
|
-
@dynamic_interface
|
|
54
|
-
def get_pid_parameters(self, channel):
|
|
55
|
-
return NotImplemented
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
class PidSimulator(PidInterface):
|
|
59
|
-
""" PID simulator class. """
|
|
60
|
-
|
|
61
|
-
def __init__(self):
|
|
62
|
-
self._is_connected = True
|
|
63
|
-
seed()
|
|
64
|
-
self.running = [1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0]
|
|
65
|
-
self.setpoints = [randint(-180, +250) for x in range(0, 14)]
|
|
66
|
-
self.temperature = [randint(-180, +250) for x in range(0, 14)]
|
|
67
|
-
self.timestamp = [0 for x in range(0, 14)]
|
|
68
|
-
self.errors = [randint(0, 200) for x in range(0, 14)]
|
|
69
|
-
self.isum = [randint(0, 900) for x in range(0, 14)]
|
|
70
|
-
self.inputs = [randint(-180, +250) for x in range(0, 14)]
|
|
71
|
-
self.outputs = [randint(-180, +250) for x in range(0, 14)]
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def is_connected(self):
|
|
76
|
-
return self._is_connected
|
|
77
|
-
|
|
78
|
-
def is_simulator(self):
|
|
79
|
-
return True
|
|
80
|
-
|
|
81
|
-
def connect(self):
|
|
82
|
-
self._is_connected = True
|
|
83
|
-
|
|
84
|
-
def disconnect(self):
|
|
85
|
-
self._is_connected = False
|
|
86
|
-
|
|
87
|
-
def reconnect(self):
|
|
88
|
-
if self.is_connected():
|
|
89
|
-
self.disconnect()
|
|
90
|
-
self.connect()
|
|
91
|
-
|
|
92
|
-
def set_temperature(self, heater_idx, setpoint_temperature):
|
|
93
|
-
logger.info("Settings temperature forPID {heater_idx} to {setpoint}")
|
|
94
|
-
self.setpoints[heater_idx] = setpoint_temperature
|
|
95
|
-
self.temperature[heater_idx] = setpoint_temperature - 10
|
|
96
|
-
|
|
97
|
-
def enable(self, channel):
|
|
98
|
-
logger.info(f"Enabling {channel}")
|
|
99
|
-
self.running[channel] = 1
|
|
100
|
-
|
|
101
|
-
def disable(self, channel):
|
|
102
|
-
logger.info(f"Disabling {channel}")
|
|
103
|
-
self.running[channel] = 0
|
|
104
|
-
|
|
105
|
-
class PidProxy(Proxy, PidInterface):
|
|
106
|
-
def __init__(self, protocol=CTRL_SETTINGS.PROTOCOL,
|
|
107
|
-
hostname=CTRL_SETTINGS.HOSTNAME,
|
|
108
|
-
port=CTRL_SETTINGS.COMMANDING_PORT):
|
|
109
|
-
super().__init__(connect_address(protocol, hostname, port))
|
egse/tempcontrol/spid/spid.yaml
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
BaseClass:
|
|
2
|
-
egse.tempcontrol.spid.PIDInterface
|
|
3
|
-
|
|
4
|
-
ProxyClass:
|
|
5
|
-
egse.tempcontrol.spid.PIDProxy
|
|
6
|
-
|
|
7
|
-
ControlServerClass:
|
|
8
|
-
egse.tempcontrol.spid.PIDControlServer
|
|
9
|
-
|
|
10
|
-
ControlServer:
|
|
11
|
-
egse.tempcontrol.spid.spid_cs
|
|
12
|
-
|
|
13
|
-
UserInterface:
|
|
14
|
-
egse.tempcontrol.spid.spid_ui
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
Commands:
|
|
18
|
-
|
|
19
|
-
# Definition of the DeviceInterface.
|
|
20
|
-
|
|
21
|
-
disconnect:
|
|
22
|
-
description: Disconnect the PID Controller.
|
|
23
|
-
|
|
24
|
-
connect:
|
|
25
|
-
description: Connect the PID Controller.
|
|
26
|
-
|
|
27
|
-
reconnect:
|
|
28
|
-
description: Reconnect the PID Controller.
|
|
29
|
-
|
|
30
|
-
is_simulator:
|
|
31
|
-
description: Ask if the control server is a simulator.
|
|
32
|
-
returns: bool | True if it is a simulator.
|
|
33
|
-
|
|
34
|
-
is_connected:
|
|
35
|
-
description: Check if PID Controller is connected.
|
|
36
|
-
|
|
37
|
-
set_temperature:
|
|
38
|
-
description: Set PID control temperature.
|
|
39
|
-
args:
|
|
40
|
-
channel: int | Channel index.
|
|
41
|
-
setpoint: float | Temperature setpoint.
|
|
42
|
-
cmd: "{channel}{setpoint}\n"
|
|
43
|
-
|
|
44
|
-
get_temperature:
|
|
45
|
-
description: Set PID control temperature.
|
|
46
|
-
args:
|
|
47
|
-
channel: int | Channel index.
|
|
48
|
-
cmd: "{channel}\n"
|
|
49
|
-
returns: int | Returns temperature setpoint for given channel
|
|
50
|
-
|
|
51
|
-
enable:
|
|
52
|
-
description: Enable the PID controller
|
|
53
|
-
args:
|
|
54
|
-
channel: int | channel index
|
|
55
|
-
cmd: "{channel}\n"
|
|
56
|
-
|
|
57
|
-
disable:
|
|
58
|
-
description: Disable the PID Controller
|
|
59
|
-
args:
|
|
60
|
-
channel: int | channel index
|
|
61
|
-
cmd: "{channel}\n"
|
|
62
|
-
|
|
63
|
-
set_pid_parameters:
|
|
64
|
-
description: Set the PID parameters of a PID channel
|
|
65
|
-
args:
|
|
66
|
-
channel: int | channel index
|
|
67
|
-
Kp: float | proportional constant
|
|
68
|
-
Ki: float | integral constant
|
|
69
|
-
Kd: float | derivative constant
|
|
70
|
-
int_max: maximum integral err
|
|
71
|
-
int_min: minumum integral err
|
|
72
|
-
reset: bool | reset the error, default = True
|
|
73
|
-
cmd: "{channel}{Kp}{Ki}{Kd}{int_max}{int_min}{reset}"
|
|
74
|
-
|
|
75
|
-
get_pid_parameters:
|
|
76
|
-
description: Get the current PID parameters
|
|
77
|
-
args:
|
|
78
|
-
channel: int | channel index
|
|
79
|
-
cmd: "{channel}"
|
|
80
|
-
returns: int | returns all parameters and the max integral error
|
|
81
|
-
|