qt development in epics - slacportalwelcomepage · epics guis in use at as • edm ... and slots...

22
Qt development in EPICS Andrew Rhyder Senior Controls Engineer Australian Synchrotron

Upload: lamthuan

Post on 10-Apr-2018

219 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

Qt development in EPICS

Andrew Rhyder Senior Controls Engineer

Australian Synchrotron

Page 2: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

EPICS GUIs in use at AS

• EDM

• MEDM

• Python

• Borland Delphi (AS)

• Tcl/tk

• KEK

• Matlab

• Labview

Page 3: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

Form editor – Qt’s ‘Designer’

Page 10: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

IDE – Qt’s Creator

Page 11: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

Display Application - ASgui

Page 12: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

CA enabled conventional Qt widgets

Page 17: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

CA enabled specialist widgets

Page 18: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

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 - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

http://sourceforge.net/projects/epicsqt/

Page 22: Qt development in EPICS - SLACPortalWelcomePage · EPICS GUIs in use at AS • EDM ... and slots through to EPICS aware Qt user interface plugins such as ... Adds Qt plugin interfaces

EPICS Qt

http://sourceforge.net/projects/epicsqt/

Australian Synchrotron

www.synchrotron.org.au