Presentation is loading. Please wait.

Presentation is loading. Please wait.

Qt GUI and IDE development in EPICS

Similar presentations


Presentation on theme: "Qt GUI and IDE development in EPICS"— Presentation transcript:

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???

38

39 Australian Synchrotron www.synchrotron.org.au
Master Pres Template AS-PM-0110 Rev0


Download ppt "Qt GUI and IDE development in EPICS"

Similar presentations


Ads by Google