350 likes | 471 Views
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.
E N D
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 modelA 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 modelA single application with displays embedded 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
Qt Framework Qt Designer EPICS Aware Qt Plugins:All EPICS aware widgetsare wrapped as pluginsQCaLabelPluginQCaLineEditPluginetc User Interface Files ASGui EPICS Aware Qt Widgets: QCaLabelQCaLineEditQCaPushButtonQCaRadioButtonQCaComboBoxQCaSpinBoxQCaSlider QCaImageQCaBitStatusQCaProgressBarQCaPlotQCaShapeQCaPeriodicQCaPvProperties Other plugin based GUI Applications Widget based GUI Applications Data IndependantEPICS Access:QCaStringQCaIntegerQCaFloatingQCaByteArray Console Applications C++ CA Library Access:CaObject CA Library Class usage
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
Macro substitution • The QCaframework manages standard EPICS macro substitutions for all widgets and data classes allowing, for example, a form to be reused for a different set of PVs
ASgui – available plugins • QCa widgets • Standard Qt widgets • Any other widgets • EPICS aware widgets that are not part of the QCa framework
Ongoing development • Add properties to ensure 100% coverage of required functionality • Rich set of properties for plot widget • Cut and past from widgets • ASgui needs some functionality such as a window menu • Doxygen doco • Conversion tools???
Metrics • Environment: • 3Ghz • quad core • 2 Gbyte • Results: • edm: 15000 updates per second • ASgui 7000 updates per second
EPICS Qthttp://sourceforge.net/projects/epicsqt/ Australian Synchrotronwww.synchrotron.org.au