1 / 35

Qt development in EPICS

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.

Download Presentation

Qt development in EPICS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Qt development in EPICS • Andrew Rhyder • Senior Controls Engineer • Australian Synchrotron

  2. EPICS GUIs in use at AS • EDM • MEDM • Python • Borland Delphi (AS) • Tcl/tk • KEK • Matlab • Labview

  3. 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.

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. Form editor – Qt’s ‘Designer’

  10. IDE – Qt’s Creator

  11. Display Application - ASgui

  12. 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

  13. QCaFramework class hierarchy

  14. CaObject part 1

  15. CaObject part 2

  16. QCaFramework class hierarchy

  17. QCaObject

  18. QCaFramework class hierarchy

  19. QCaString

  20. QCaFramework class hierarchy

  21. CA enabled conventional Qt widgets

  22. CA enabled specialist widgets

  23. CA enabled specialist widgets

  24. QCaLabel

  25. QCaFramework class hierarchy

  26. QCaFramework class hierarchy

  27. 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

  28. Simple example

  29. camonitor-like example

  30. 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

  31. ASgui – available plugins • QCa widgets • Standard Qt widgets • Any other widgets • EPICS aware widgets that are not part of the QCa framework

  32. 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???

  33. Metrics • Environment: • 3Ghz • quad core • 2 Gbyte • Results: • edm: 15000 updates per second • ASgui 7000 updates per second

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

  35. EPICS Qthttp://sourceforge.net/projects/epicsqt/ Australian Synchrotronwww.synchrotron.org.au

More Related