1. Title: EPICSQt Design Specification
Document no: 11556
Revision no: 0.2
Date: 23 June 2010
Australian Synchrotron Company Limited
ABN 52 126 531 271
800 Blackburn Road, Clayton Victoria 3168, Australia
p +613 8540 4100 f +613 8540 4200
e info@synchrotron.org.au www.synchrotron.org.au
Prepared by: Name: Glenn Jackson
Title: Senior Control Systems Engineer
Date: 18 November 2008
Reviewed by: Name: Andrew Rhyder
Title: Senior Control Systems Engineer
Date: 18 November 2009
Approved by Name: Anthony Owen
Title: Control Systems Engineer
Date: 18 November 2009
2. EPICSQt Design Specification
Revision History
Revision Date Prepared by
0 18/11/2008 Glenn Jackson
0.2 13/11/2009 Glenn Jackson
Prepared by Description
Glenn Jackson Initial draft
Glenn Jackson Prepared document for CM
3. EPICSQt Design Specification
Table of Contents
1 Introduction................................
1.1 Purpose................................................................
1.2 Referenced documents ................................
1.2.1 Australian Synchrotron Documents
1.2.2 External Documents ................................
1.3 Scope ................................................................
1.3.1 Integrating the Qt Framework into EPICS
2 Australian Synchrotron Classes
2.1 AS Core EPICS Classes ................................
2.1.1 CaObject Class................................
2.1.2 QCaObject Class................................
2.2 AS Middle-Layer Classes ................................
2.2.1 QCaString ................................
2.2.2 QCaInteger................................
2.2.3 QCaFloat ................................
2.3 AS EPICS Application Layer Widgets
2.3.1 QCaLabel ................................
2.3.2 QCaLineEdit................................
2.3.3 QCaPushButton ................................
2.3.4 QCaSlider................................
2.3.5 QCaSpinBox ................................
2.3.6 QCaShape................................
2.3.7 GuiPushButton................................
2.3.8 CmdPushButton................................
2.3.9 QCaCombo ................................
2.3.10 ASguiForm ................................
2.4 AS IDE Design-Time Widgets
List of Figures
Figure 1 - Project Overview Diagram
List of Tables
Table 1 - Australian Synchrotron Qt Documentation
Table 2 - Design-Time Plug-ins
................................................................................................................................
................................................................................................
................................................................................................
stralian Synchrotron Documents ................................................................
................................................................................................
................................................................................................
Framework into EPICS ................................................................
Australian Synchrotron Classes...............................................................................................
................................................................................................
................................................................................................................................
................................................................................................
................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
AS EPICS Application Layer Widgets ................................................................
................................................................................................................................
................................................................................................................................
................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................................................
................................................................................................
................................................................................................................................
................................................................................................................................
Time Widgets ................................................................................................
w Diagram ................................................................
Australian Synchrotron Qt Documentation..........................................................
ins.............................................................................................
................................1
..................................... 1
............................................ 1
..............................................................1
........................................................1
........................................ 1
.....................................................2
...............................3
........................................... 3
.................................3
..............................................................3
......................................... 3
.........................................3
........................................3
...........................................3
..................................................... 3
..........................................3
......................................4
...............................................................4
..........................................4
.....................................4
.........................................4
.................................4
...............................................................4
.......................................4
....................................4
.................................. 5
...................................................2
..........................2
.............................5
4. 1 Introduction
EPICSQt is a combination
Channel Access (CA) API extended into the graphical QT framework using C++. It is designed for
rapid development of control system graphical interfaces.
Qt has been chosen by the Australian
(GUI) Framework for writing software applications including GUI applications for use at the Australian
Synchrotron. The control system currently in use at the Australi
Physics and Industry Control System (
standard tools for writing client applications to interact with the control system.
provide a quick way to monitor
is required. For example, more complex client
accomplished with Qt which would not be possible with EDM/MEDM.
address many requirements from the facility which may be more difficult or impossible to achieve
using EDM/MEDM.
The Qt Framework has been discussed
maintain a common code base across many synchrotron
Team is in the process of a common framework for use with EPICS control systems. This facility
should use a common code base for all Qt projects which will be provided
Synchrotron Controls Team. Section
with EPICS.
1.1 Purpose
The purpose of this document
1.2 Referenced documents
1.2.1 Australian Synchrotron Documents
ASP-ICS-2002-A EPICS Installation Procedure (Linux)
ASP-ICS-2002-B EPICS Installation Procedure (Windows™)
ASP-ICS-2009 Perforce Installation Procedure
AS-DOC-0302 Qt Installation Guide
AS-DOC-0303 Developer’s Guide to writing Qt
1.2.2 External Documents
Qt Software http://qt.nokia.com/
EPICS Software http://www.aps.anl.gov/epics/
EPICSQt Repository http://sourceforge.net/projects/epicsqt/
Perforce Software http://www.perforce.com/
EPICS APS http://www.epics.aps.com/
EPICS CA Manual http://epics.aps.anl.gov/epics/base/R3
1.3 Scope
The scope of this document is
GUI applications for the Australian Sy
available for using the Qt Framework at the Australian Synchrotron. The highlighted row indicates the
current document and how this document relates to the available
Document
Qt Requirements Specification
Qt Design Specification
Qt Installation Guide
EPICSQt is a combination of the Experimental Physics and Industrial Control System (EPICS)
Channel Access (CA) API extended into the graphical QT framework using C++. It is designed for
rapid development of control system graphical interfaces.
by the Australian Synchrotron as an officially supported Graphical User Interface
Framework for writing software applications including GUI applications for use at the Australian
Synchrotron. The control system currently in use at the Australian Synchrotron is
Physics and Industry Control System (EPICS). EPICS includes tools such as EDM and MEDM as the
for writing client applications to interact with the control system. In some cases
monitor and manipulate data, however, in many cases, additional functionality
For example, more complex client-side calculations on raw, incoming data can be
accomplished with Qt which would not be possible with EDM/MEDM. Qt is intended to be used to
requirements from the facility which may be more difficult or impossible to achieve
been discussed between several synchrotron labs. Although it is difficult to
maintain a common code base across many synchrotron facilities, the Australian Synchrotron Controls
a common framework for use with EPICS control systems. This facility
use a common code base for all Qt projects which will be provided
eam. Section 1.3 outlines the functionality available for use with integrating Qt
The purpose of this document is to define the Interface between the Qt GUI framework and EPICS.
Australian Synchrotron Documents
EPICS Installation Procedure (Linux)
EPICS Installation Procedure (Windows™)
Perforce Installation Procedure
Qt Installation Guide
Developer’s Guide to writing Qt-CA GUIs
http://qt.nokia.com/
http://www.aps.anl.gov/epics/
http://sourceforge.net/projects/epicsqt/
http://www.perforce.com/
http://www.epics.aps.com/
http://epics.aps.anl.gov/epics/base/R3-14/10-docs/CAref.html
The scope of this document is to address the Requirement Specification for writing and supporting
plications for the Australian Synchrotron(AS). The table below lists the documentation
available for using the Qt Framework at the Australian Synchrotron. The highlighted row indicates the
current document and how this document relates to the available AS Qt documentation.
CM Location Description
11555 Australian Synchrotron Qt GUI Requirements.
11556 Overview of the Qt-EPICS CA functionality.
11557 Installing Qt on Windows™ and Linux operating system.
of the Experimental Physics and Industrial Control System (EPICS)
Channel Access (CA) API extended into the graphical QT framework using C++. It is designed for
Graphical User Interface
Framework for writing software applications including GUI applications for use at the Australian
an Synchrotron is the Experimental
tools such as EDM and MEDM as the
In some cases, it can
late data, however, in many cases, additional functionality
side calculations on raw, incoming data can be
is intended to be used to
requirements from the facility which may be more difficult or impossible to achieve
. Although it is difficult to
facilities, the Australian Synchrotron Controls
a common framework for use with EPICS control systems. This facility
use a common code base for all Qt projects which will be provided by the Australian
available for use with integrating Qt
amework and EPICS.
docs/CAref.html
to address the Requirement Specification for writing and supporting
. The table below lists the documentation
available for using the Qt Framework at the Australian Synchrotron. The highlighted row indicates the
AS Qt documentation.
Description
Australian Synchrotron Qt GUI Requirements.
EPICS CA functionality.
Installing Qt on Windows™ and Linux operating system.
5. EPICSQt Design Specification
Document
Qt Developers Guide
API Reference Manual
Table
1.3.1 Integrating the Qt Framework into
Section 2 Australian Synchrotron Classes
represented in the diagram. The EPICS Community
and EDM/MEDM screens. Qt provides the GUI Framework required for bu
Linux. The four main objectives of this project
• QCaObject will make available required aspects of the EPICS C Reference Library to C++ and Qt.
• QCa widgets will enable Qt Widgets to be
• User interface definitions will be written to standardise the appearance and base features of all
Australian Synchrotron GUIs. This will be used as the template base form for creating
GUIs.
• An ASGui example application
CA aware widgets to be viewed by users
CM Location Description
11554 Developing Qt GUIs for use in the facility.
AS Doxygen Server Open-source code available for Qt
Table 1 - Australian Synchrotron Qt Documentation
Integrating the Qt Framework into EPICS
Australian Synchrotron Classes of this document provides the details of each of the classes
EPICS Community provides the C Reference Library, Channel Access
and EDM/MEDM screens. Qt provides the GUI Framework required for building software under Windows and
main objectives of this project are:
will make available required aspects of the EPICS C Reference Library to C++ and Qt.
enable Qt Widgets to be EPICS Channel Access aware.
will be written to standardise the appearance and base features of all
Australian Synchrotron GUIs. This will be used as the template base form for creating
application will be written in Qt. This will allow User Interface definitions including
CA aware widgets to be viewed by users.
Figure 1 - Project Overview Diagram
Description
Developing Qt GUIs for use in the facility.
source code available for Qt-EPICS CA API.
of this document provides the details of each of the classes
provides the C Reference Library, Channel Access (CA)
ilding software under Windows and
will make available required aspects of the EPICS C Reference Library to C++ and Qt.
will be written to standardise the appearance and base features of all
Australian Synchrotron GUIs. This will be used as the template base form for creating facility-wide
allow User Interface definitions including
6. EPICSQt Design Specification
2 Australian Synchrotron
2.1 AS Core EPICS Classes
The CaObject and QCaObject as well as other supporting classes will be responsible for making the
EPICS C Reference Library available in C++.
2.1.1 CaObject Class
The CaObject base class will provide
While available to the developer, it
based QCaObject class. It will be
While the CaObject class will hide
simplify CA access. All CA call
encapsulated in the ‘generic’ class th
stored in the native CA record.
2.1.2 QCaObject Class
The QcaObject class will provide
such as link status, connections and channels.
CaObject class. Data can be written using
status information as required. Qt data types
data.
2.2 AS Middle-Layer Classes
The QCaObject class will send and receive
sources of data require a specific
Middle layer classes provide wrappers for the QCaO
type.
2.2.1 QCaString
The QCaString class will be a s
string data regardless of the underlying EPICS data.
representation of EPICS data i
2.2.2 QCaInteger
QCaInteger will be the integer specific wrapper for
data regardless of the underlying EPICS data.
of EPICS data is required. For example, a slider control
2.2.3 QCaFloat
The QCaFloat class will be a float specific wrapper for
write float data regardless of the underlying EPICS data.
representation of EPICS data is r
2.3 AS EPICS Application Layer Widgets
Widget classes will be provided to allow CA aware controls to be added to a GUI.
2.3.1 QCaLabel
A CA aware Label Widget will be
Australian Synchrotron Classes
Object and QCaObject as well as other supporting classes will be responsible for making the
EPICS C Reference Library available in C++.
will provide a C++ wrapper around the EPICS Channel Access (
While available to the developer, it will be written mainly to provide a level of abstraction within the Qt
will be recommended to be used where a Qt framework is not av
will hide little CA functionality, it will use object oriented techniques to
simplify CA access. All CA call-backs will be routed through a single pure virtual function. Data
encapsulated in the ‘generic’ class that provides functions for extracting and interpreting the data
stored in the native CA record.
will provide full access to EPICS data while hiding most CA specific functionality
such as link status, connections and channels. The QcaObject class will add Qt functionali
CaObject class. Data can be written using Qt slots and Qt signals which will be avai
status information as required. Qt data types will be used directly, or as the base class for all EPICS
lasses
ct class will send and receive data in the form of a QtVariant. Many consumers or
specific data type and will not be able to interpret every EPICS data type.
Middle layer classes provide wrappers for the QCaObject to convert the data to and
a string wrapper for QCaObject variant data. This class will read or write
string data regardless of the underlying EPICS data. This class will be used when a textual
tion of EPICS data is required. For example, a text-edit control widget.
nteger specific wrapper for QCaObject. This class will read or writ
ss of the underlying EPICS data. This class will be used when an integer representation
of EPICS data is required. For example, a slider control widget.
The QCaFloat class will be a float specific wrapper for QCaObject variant data. This class will read or
write float data regardless of the underlying EPICS data. This class will be used when a float
representation of EPICS data is required. For example, a text-edit control widget.
EPICS Application Layer Widgets
provided to allow CA aware controls to be added to a GUI.
will be inherited from the standard Qt Label Widget.
Object and QCaObject as well as other supporting classes will be responsible for making the
EPICS Channel Access (CA) Library.
written mainly to provide a level of abstraction within the Qt
recommended to be used where a Qt framework is not available.
use object oriented techniques to
routed through a single pure virtual function. Data will be
at provides functions for extracting and interpreting the data
full access to EPICS data while hiding most CA specific functionality
Qt functionality to the
available for data and
used directly, or as the base class for all EPICS
data in the form of a QtVariant. Many consumers or
every EPICS data type.
bject to convert the data to and from one specific
This class will read or write
used when a textual
This class will read or write integer
used when an integer representation
This class will read or
This class will be used when a float
provided to allow CA aware controls to be added to a GUI.
7. EPICSQt Design Specification
2.3.2 QCaLineEdit
A CA aware Line Edit Widget
2.3.3 QCaPushButton
A CA aware Push Button Widget
2.3.4 QCaSlider
A CA aware Slider Widget will be
2.3.5 QCaSpinBox
A CA aware Spin-box Widget
2.3.6 QCaShape
A CA aware Shape Widget will be
2.3.7 GuiPushButton
A push button, based on the standard Qt Push Button Widget,
Widget.
2.3.8 CmdPushButton
A push button, based on the standard Qt Push Button Widget,
command.
2.3.9 QCaCombo
A CA aware Combo-box Widget
2.3.10 ASguiForm
A Form Widget, based on the standard Qt Form
will be inherited from the standard Qt Line Edit Widget
A CA aware Push Button Widget will be inherited from the standard Qt PushButton Widget.
will be inherited from the standard Qt Slider Widget.
will be inherited from the standard Qt Spin-box Widget.
will be inherited from the standard Qt Shape Widget.
A push button, based on the standard Qt Push Button Widget, will be used to open a new
A push button, based on the standard Qt Push Button Widget, will be used to run
x Widget will be based on the standard Qt Combo Box Widget.
on the standard Qt Form widget, will be able to read in a Qt User Interface file
inherited from the standard Qt Line Edit Widget.
inherited from the standard Qt PushButton Widget.
ox Widget.
used to open a new ASguiForm
used to run an operating system
on the standard Qt Combo Box Widget.
read in a Qt User Interface file.
8. EPICSQt Design Specification
2.4 AS IDE Design-Time Widgets
All new Widgets specified in this design
within the Qt Designer application, or by any other application that
Available design-time plug-ins are as follows:
IDE Plug-in
QCaLabelPlugin
QCaLineEditPlugin
QCaPushButtonPlugin
GuiPushButtonPlugin
CmdPushButtonPlugin
QCaShapePlugin
QCaSliderPlugin
QCaSpinBoxPlugin
QCaComboBoxPlugin
ASguiFormPlugin
Time Widgets
specified in this design will have plug-in wrappers to allow the widgets to be used
within the Qt Designer application, or by any other application that will use a Qt plug
ins are as follows:
in Base Widget
QCaLabelPlugin QCaLabel
QCaLineEditPlugin QCaLineEdit
QCaPushButtonPlugin QCaPushButton
GuiPushButtonPlugin GuiPushButton
CmdPushButtonPlugin CmdPushButton
QCaShapePlugin QCaShape
QCaSliderPlugin QCaSlider
QCaSpinBoxPlugin QCaSpinBox
QCaComboBoxPlugin QCaComboBox
ASguiFormPlugin ASguiForm
Table 2 - Design-Time Plug-ins
wrappers to allow the widgets to be used
plug-in.