Download presentation
Presentation is loading. Please wait.
1
Qt GUI and IDE development in EPICS
Andrew Rhyder Senior Controls Engineer Australian Synchrotron
2
EPICS GUI alternatives
EDM MEDM CSS wxPython Borland Delphi (AS) Qt/Python (Diamond) KWT (PAL) Tcl/tk KEK Matlab Labview Looking for a GUI solution in 2008 Standardise GUIs Lifetime of openMotif with implications for medm Aging style Scope of personel resources for GUI development
3
QCa Framework QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. The QCa framework provides a Qt based C++ framework for easy CA access to EPICS data. It provides access to EPICS data at several levels from programmatic reading and writing of data using Qt’s signals and slots through to EPICS aware Qt user interface plugins such as push buttons, sliders, and text widgets.
4
GUI development models
Document model A single static application can open display files. Displays are added by designing new display files. Medm – opens .edl files Edm – opens .adl files ASgui – opens .ui files Part of QCa framework CSS? Application model A single application with displays embedded within the application. Displays are added by extending the application. CSS Australian Synchrotron control room GUI QCa framework
5
Code Free GUI development • Rich, robust, intuitive, form editor
• Allows interaction with MEDM / EDM and other applications • Integration with other Qt plugins • Any application that can load Qt UI files can display EPICS GUIs
6
Code Rich GUI development
• Use existing EPICS display and control widgets for rapid and consistant development • Develop speciality EPICS widgets using Qt friendly EPICS data classes • Include as much or as little application specific code as required
7
Console app development • Full access to EPICS data
• Hides most CA specific functionality unless required • Qt signals and slots used for data reading and writing
8
QCa framework development components
Form editor Qt’s Designer IDE Qt’s Creator Display application ASgui (QCa framework) EPICS aware graphical widgets QCa framework EPICS aware data classes QCa framework
9
Form editor – Qt’s ‘Designer’
QCa widgets live at design time
10
IDE – Qt’s Creator
11
Display Application - ASgui
12
Class usage
13
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
14
CaObject part 1
15
CaObject part 2
16
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
17
QCaObject
18
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
19
QCaFloating
20
QCaInteger
21
QCaString
22
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
23
QCaLabel
24
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
25
QCaLabelPlugin
26
QCaLabelPlugin
27
QCa Framwork class hierarchy
Type of access to CA data Functionality Main classes C++ access to the CA library. Provides convenient C++ access to the CA library. CaObject Qt based access to CA. Hides CA specific functionality. Adds Qt functionality such as signals and slots. QCaObject Data type independent access. Hides EPICS data types, providing read and write conversions where required. QCaInteger QCaString QCaFloating EPICS aware graphical widgets. Implements graphical Qt based widgets that provide access to EPICS data. QCaLabel QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton
28
Processing CA callbacks within QCa
29
Processing CA callbacks within QCa
30
QCaShape widget example
31
Plot widget example
32
Simple camonitor example
33
Variable substitution
A form can be designed to accept substitutions from the command line, or from the form it is embedded within Default substitutions aid form design
34
ASgui - Single instance startup
Command line switch –s will force an existing instance to display the required form.
35
ASgui – available plugins
QCa widgets Standard Qt widgets Any other widgets EPICS aware widgets that are not part of the QCa framework
36
Avoiding database support for GUIs
Qt’s standard signals and slots, with the QCa link widget allows rich interaction between display widgets without the need for EPICS PV performing calculations and logic. For example: A mode switch enabling text entry fields or push buttons A combo box selecting a tab on a sub form
37
Ongoing development Add properties to ensure 100% coverage of edm/medm functionality Rich set of properties for plot widget Cut and past from widgets ASgui window menu Doxygen doco Conversion tools???
39
Australian Synchrotron www.synchrotron.org.au
Master Pres Template AS-PM-0110 Rev0
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.