Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI...
Transcript of Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI...
![Page 1: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/1.jpg)
Qt development in EPICS
Andrew Rhyder Senior Controls Engineer
Australian Synchrotron
![Page 2: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/2.jpg)
EPICS GUIs in use at AS
• EDM
• MEDM
• Python
• Borland Delphi (AS)
• Tcl/tk
• KEK
• Matlab
• Labview
![Page 3: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/3.jpg)
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.
![Page 4: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/4.jpg)
GUI development models
• Document model A single static application can open display files.
Displays are added by designing new display files.
• MEDM – opens .adl files
• EDM – opens .edl files
• CSS – opens .opi files
• ASgui – opens .ui files Part of QCa framework
• Application model An application with displays and functionality coded within the
application.
Displays are added by extending the application.
• CSS
• Australian Synchrotron control room GUI
• QCa framework
![Page 5: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/5.jpg)
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
![Page 6: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/6.jpg)
Code Rich GUI
development
• Use existing EPICS display and
control widgets for rapid and
consistent development
• Develop speciality EPICS widgets
using Qt friendly EPICS data classes
• Include as much or as little application
specific code as required
![Page 7: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/7.jpg)
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
![Page 8: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/8.jpg)
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
![Page 9: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/9.jpg)
Form editor – Qt’s ‘Designer’
![Page 10: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/10.jpg)
IDE – Qt’s Creator
![Page 11: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/11.jpg)
Display Application - ASgui
![Page 12: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/12.jpg)
Class usage
Qt Framework
EPICS Aware Qt Plugins: All EPICS aware widgets are wrapped as plugins
QCaLabelPlugin QCaLineEditPlugin
etc
QCaLabel QCaLineEdit
QCaPushButton QCaRadioButton QCaComboBox
QCaSpinBox QCaSlider
EPICS Aware Qt Widgets:
QCaImage QCaBitStatus
QCaProgressBar QCaPlot
QCaShape QCaPeriodic
QCaPvProperties
Data Independant EPICS Access:
QCaString QCaInteger QCaFloating
QCaByteArray
C++ CA Library Access: CaObject
CA Library
Qt Designer
ASGui
Other plugin based GUI Applications
Widget based GUI Applications
Console Applications
User Interface Files
![Page 13: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/13.jpg)
QCa Framework 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
QCaLineEdit
QCaPushButton
QCaRadioButton
...
QCaImage
QCaBitStatus
QCaProgressBar
QCaPlot
...
EPICS aware graphical Qt
plugins.
Adds Qt plugin interfaces to EPICS aware
widgets.
QCaLabelPlugin
QCaLineEditPlugin
QCaPushButtonPlugin
QCaRadioButtonPlugin
...
QCaImagePlugin
QCaBitStatusPlugin
QCaProgressBarPlugin
QCaPlotPlugin
...
GUI support widgets Implements Qt based widgets that
support control system GUIs. These
widgets to not access the CA library.
AsGuiForm
QCaPushButton
Link
QCaSubstitutedLabel
![Page 14: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/14.jpg)
QCa Framework 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
QCaLineEdit
QCaPushButton
QCaRadioButton
...
QCaImage
QCaBitStatus
QCaProgressBar
QCaPlot
...
EPICS aware graphical Qt
plugins.
Adds Qt plugin interfaces to EPICS aware
widgets.
QCaLabelPlugin
QCaLineEditPlugin
QCaPushButtonPlugin
QCaRadioButtonPlugin
...
QCaImagePlugin
QCaBitStatusPlugin
QCaProgressBarPlugin
QCaPlotPlugin
...
GUI support widgets Implements Qt based widgets that
support control system GUIs. These
widgets to not access the CA library.
AsGuiForm
QCaPushButton
Link
QCaSubstitutedLabel
![Page 15: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/15.jpg)
QCa Framework 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
QCaLineEdit
QCaPushButton
QCaRadioButton
QCaComboBox
QCaSpinBox
QCaSlider
QCaImage
QCaBitStatus
QCaProgressBar
QCaPlot
QCaShape
QCaPeriodic
QCaPvProperties
EPICS aware graphical Qt
plugins.
Adds Qt plugin interfaces to EPICS aware
widgets.
QCaLabelPlugin
QCaLineEditPlugin
...
QCaImagePlugin
QCaBitStatusPlugin
...
GUI support widgets Implements Qt based widgets that
support control system GUIs. These
widgets to not access the CA library.
AsGuiForm
QCaPushButton
Link
QCaSubstitutedLabel
![Page 16: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/16.jpg)
CA enabled conventional Qt widgets
![Page 17: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/17.jpg)
CA enabled specialist widgets
![Page 18: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/18.jpg)
Embedding GUI functionality within the UI
Qt’s standard signals and slots, with the
QCaLink widget allows rich interaction
between display widgets without the need
for calculations and logic in the EPICS DB,
or for code in the GUI application.
Other examples:
• A mode switch enabling text entry fields or
push buttons
• A combo box selecting a tab on a sub form
![Page 19: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/19.jpg)
ASgui – available plugins
• QCa widgets
• Standard Qt widgets
• Any other widgets
• EPICS aware widgets that are not part of the QCa framework
![Page 20: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/20.jpg)
Metrics
Environment:
• 3Ghz
• Single core (VM)
• 2 Gbyte
Results:
• edm: 15000 updates per second
• ASgui 7000 updates per second
![Page 21: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/21.jpg)
http://sourceforge.net/projects/epicsqt/
![Page 22: Qt development in EPICS - Stanford University · • QCa. A cross-platform application and GUI framework based on Qt for accessing EPICS data using Channel Access. • The QCa framework](https://reader036.fdocuments.us/reader036/viewer/2022081613/5fb5ecb51574f455444f6474/html5/thumbnails/22.jpg)
EPICS Qt
http://sourceforge.net/projects/epicsqt/
Australian Synchrotron
www.synchrotron.org.au