Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Qt development in EPICS
Andrew Rhyder Senior Controls Engineer
Australian Synchrotron
EPICS GUIs in use at AS
• EDM
• MEDM
• Python
• Borland Delphi (AS)
• Tcl/tk
• KEK
• Matlab
• Labview
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.
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
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
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
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
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
Form editor – Qt’s ‘Designer’
IDE – Qt’s Creator
Display Application - ASgui
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
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
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
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
CA enabled conventional Qt widgets
CA enabled specialist widgets
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
ASgui – available plugins
• QCa widgets
• Standard Qt widgets
• Any other widgets
• EPICS aware widgets that are not part of the QCa framework
Metrics
Environment:
• 3Ghz
• Single core (VM)
• 2 Gbyte
Results:
• edm: 15000 updates per second
• ASgui 7000 updates per second
http://sourceforge.net/projects/epicsqt/
EPICS Qt
http://sourceforge.net/projects/epicsqt/
Australian Synchrotron
www.synchrotron.org.au