caQtDM offers a collection of special widgets in order to display and control control system data in various ways. The widgets have been inspired from the well known MEDM package used at many EPICS sites. However caQtDM is not restricted to EPICS and can/could also support other control systems. At PSI caQtDM is used at several facilities and controls not only EPICS, but also simultaneously an older house-made system. Moreover support has already been introduced for EPICS4, but is still in development.
In case of existing MEDM files, these can be translated to Qt xml files by using the utility adl2ui contained in the package. Normally nothing will have to be changed in the resulting files, but in case of small problems, like for instance in overlapping order, the Qt4-designer can be used to correct these. However when you start from scratch, you will develop your screens with the Qt4-designer and display them by the caQtDM utility, which takes care of the data acquisition/control and the display. The conventions for the widgets and channels are fully compatible with MEDM and some other widgets have been added. The MEDM manual will give you normally all the necessary explanations for the different widgets while the mechanisms are the same. However you will have to get accustomed with the Qt4-designer utility and a quick look at its manual delivered with it, should give you an idea.
For building and installing caqtdm following requirements have to met:
- Qt 4.8.2
- Qwt 6.0.1
- EPICS 3.12.2
- Designer
or
- Qt 6.4
- Qwt 6.2.0
- EPICS 7.0.6
- Designer
The latest version of caQtDM has build and installation procedure working for several linux platforms. First you will have to unpack the tar archive, which will create the necessary directories and files. In the upper directory you will find the necessary procedures to build the package, run it locally without installing and also an installation procedure.
-
you will have to install Qt-4.8 and qwt-6 when they are not already installed. On modern systems Qt4 should already be installed, but the qt4-designer not necessarily and you should install it (eventually with sudo apt-get install qt4-designer). qwt is normally not installed and you should install this too.
-
you will have to install EPICS
-
all the environment variables used for the installation will be defined in the script caQtDM_Env. When some of the variables are already defined in your environment, the script will use them, otherwise they will be defined. It is up to you to edit this file and adapt the variables to your environment.
-
the script caQtDM_BuildAll will build you the package now into the directory ./caQtDM_Binaries. You should obtain there adl2ui, caQtDM, libqtcontrols.so and libcaQtDM_Lib.so as well as a designer directory containing 3 files
libqtcontrols*_plugin.so
. If you encounter a problem when building due to some environment variable problem or while not everything was installed before, you may correct your problem and run the script again. In case you want to cleanup you use the script caQtDM_CleanAll, which will also delete the resulting binaries. -
you may try to install the package: the package should normally be installed in the EPICS extensions and the environment variables are pointing to them.
Running caQtDM: when the package has been successfully build into the directory ./caQtDM_Binaries, you can start caQtDM by using the script startDM_Local and the qt4-designer by the script qtdesigner (all located in the main directory where you expanded the tar file). These scripts will set some important environment variables in order to set the path, the plugin_path and to point to the test directory provided with the package (./caQtDM_Tests). In this directory also the stylesheets are located to be used for a nice rendering. You may call the test.ui file with the above mentioned scripts. In order to test the display some EPICS channels have to be defined. This can be done by running a soft-ioc shell called with run-epics also provided in the test directory.
In case you have qwt 6.1 you will have to use in caQtDM_QtControls/src the files qwt_thermo_marker_61.* instead of qwt_thermo_marker.*
In case you already use Qt5.15 with qwt6.1.5 the building should also be straight forward.
good luck and enjoy
In case of problems, please contact Helge Brands at PSI.
To compile and run caQtDM on Windows following requirements have to be met:
- Qt 4.8.2 - Qt 6.4.0
- Qwt 6.0.1 - Qwt 6.2.0
- EPICS 7.0.6
- MS Visual Studio 2013 and MS Visual Studio 2019
- Wix 3.0.5419.0
With caQtDM_Env.bat you can configure your system. All setting which are needed will be taken from here.
The building can be started with the batchfile : caQtDM_BuildAll.bat The packaging is made with the batch file : caQtDM_Build_Package.bat This will generate a MSI installation file in the folder of caQtDM_Binaries. To clean the Folder you should use caQtDM_CleanAll.bat.
Following environment variables can be used to configure caqtdm:
-
QT_PLUGIN_PATH - to find the plugins of qt and others
-
EPICS_CA_ADDR_LIST - see EPICS Documentation
-
EPICS_CA_MAX_ARRAY_BYTES - see EPICS Documentation
-
CAQTDM_LAUNCHFILE - Enviroment file for Mobile devices
-
CAQTDM_TIMEOUT_HOURS to exit caQtDM after some amount of time
-
CAQTDM_DISPLAY_PATH - paths to look for ui and stylesheet files
-
CAQTDM_URL_DISPLAY_PATH - paths to look for ui and stylesheet files to download via http
-
CAQTDM_MIME_PATH - path to MIME file
-
CAQTDM_EXEC_LIST - execution list for context menu
-
MEDM_EXEC_LIST - for backwards......
-
BSREAD_DISPATCHER - point the bsread plugin to the dispatcher
-
BSREAD_ZMQ_CONNECTION_TYPE - control the connection type of the bsread plugin
-
BSREAD_ZMQ_ADDR_LIST - point the bsread plugin static sources
-
CAQTDM_OPTIMIZE_EPICS3CONNECTIONS - Disable Epics3 connections when tabwidget is not active, set to "TRUE" to activate
-
CAQTDM_MODBUS_DATABASE - Database to use for the modbus plugin
-
CAQTDM_ARCHIVERSF_URL - point the archiver plugin to a different archiver backend
-
CAQTDM_ARCHIVEHTTP_URL - point the archiveHTTP plugin to a different archiver backend
-
CAQTDM_ARCHIVEHTTP_BACKEND - Specify the "backend" parameter for archiver API queries. This can be overwritten by the dynamic property "backend".
-
CAQTDM_ARCHIVEHTTP_APIPATH_BINNED - Overwrite the default API path for binned data. Needs to be in the format: /path/to/binned
-
CAQTDM_ARCHIVEHTTP_APIPATH_RAW - Overwrite the default API path for raw data (events). Needs to be in the format: /path/to/events
-
CAQTDM_FINDRECORD_SRV - for autocompletion, the request URL
-
CAQTDM_FINDRECORD_FACILITY - search limitation for a facility
-
CAQTDM_FINDRECORD_LIMIT - search limit max number of entries
-
CAQTDM_FINDRECORD_DIRECT - override all other find record settings (direct json http download)
-
CAQTDM_DEFAULT_UNIT_REPLACEMENTS - if set to "false", default unit replacements (°/µ) are disabled.
-
CAQTDM_CUSTOM_UNIT_REPLACEMENTS - define custom unit replacements. They are replaced after default replacements took place, if enabled. You can use unicode characters or hexadecimal / decimal utf-8 character codes, seperated by (,) , (=) and (;). Examples: "0xba,C=55,abc,0xb0;cd=23;0x43=0x44" , "°=0xba"
-
CAQTDM_SUPPRESS_UPDATES_ONLOAD - Disables widgets from being updated while a file is being opened. This can reduce load times of big panels by more than 50. Values: "TRUE", "FALSE" , without quotes
-
CAQTDM_CREATE_LOGFILE - If set to "TRUE", caQtDM will create a logfile containing all of the input from the message window. If caQtDM exits successfully, this file gets deleted after termination.
-
CAQTDM_LOGFILE_PATH - This specifies the path where the logfile, if logging is active, will be stored.