Qt GUI and IDE development in EPICS

Slides:



Advertisements
Similar presentations
Castafiore platform Consists or intend to consist of 1.Advanced Web framework 2.Advanced Graph database 3.Designer studio (something like visual basic)
Advertisements

Wir schaffen Wissen – heute für morgen A.C.Mezger, Paul Scherrer Institut, Switzerland caQtDM, an EPICS display manager with Qt Paul Scherrer Institut.
Wir schaffen Wissen – heute für morgen caQtDM: a Qt-based EPICS display manager, status report Helge Brands, Anton Mezger, Paul Scherrer Institut At the.
ICS 665 Jesse Abdul. jQuery UI Overview  jQuery UI javascript library Includes all UI component functionality  jQuery UI CSS framework Includes standard.
Wir schaffen Wissen – heute für morgen A.C.Mezger An EPICS Display manager with Qt.
EDM Screen Display Using PYTHON Python and the CLS and me.
EPICS Qt Update Paul Martin 1. Australian Synchrotron 3GeV, 216m circumference synchrotron 8 Beamlines 12 Software Engineers IMBL – Worlds Widest Beam.
Separating VUI from business logic Caller Experience-centered design approach Alex Kurganov, CTO Parus Interactive
SAD and Python with EPICS at IHEP,Beijing, Noboru Yamamoto KEK, JAPAN.
Yahoo! User Interface (YUI) Library Natly Mekdara.
NOTE: To change the image on this slide, select the picture and delete it. Then click the Pictures icon in the placeholder to insert your own image. WEB.
Definition of the SDK for FIspace Augusto Morales & Hector Bedón UPM.
Deutsches Elektronen-Synchrotron DESY Helmholtz Association of German Research Centres Hamburg, Germany The European X-Ray Laser Project.
Department of Mechanical Engineering, LSUSession VII MATLAB Tutorials Session VIII Graphical User Interface using MATLAB Rajeev Madazhy
CHEF II / Sakai Architecture. CHEF II Changes uPortal replaces Jetspeed –jsr 168 portlet, servlet compliant Spring replaces Turbine component framework.
Selected Topics in Software Engineering - Distributed Software Development.
Prachi Chitnis.  The CSS feel  SDS – Synoptic Display Studio  ADL Converter  PV table, Probe…
Managed by UT-Battelle for the Department of Energy Kay Kasemir ORNL/SNS Jan Control System Studio, CSS Overview.
Lection №5 Modern integrated development environment.
Creating Graphical User Interfaces (GUI’s) with MATLAB By Jeffrey A. Webb OSU Gateway Coalition Member.
Introduction to Matlab & Data Analysis 2015 In this tutorial we will: Build a practical application using GUIDE Learn more about graphical user interface.
MS Visual Basic 6 Walter Milner. VB 6 0 Introduction –background to VB, A hello World program 1 Core language 1 –Projects, data types, variables, forms,
Matthias Clausen, DESY CSS GSI Feb. 2009: Synoptic Display Studio and ArchiveBrowser XFEL The European X-Ray Laser Project X-Ray Free-Electron.
Graphical User Interface You will be used to using programs that have a graphical user interface (GUI). So far you have been writing programs that have.
Creating a Qt Widget Based Application From Qt Creator Manual.
EPICS Qt Fall Meeting October 2014 Saclay
MATLAB for Engineers 4E, by Holly Moore. © 2014 Pearson Education, Inc., Upper Saddle River, NJ. All rights reserved. This material is protected by Copyright.
Managed by UT-Battelle for the Department of Energy CSS Update Matthias Clausen, Helge Rickens, Jan Hatje and DESY Delphy Armstrong, Xihui Chen,
GUI development with Matlab: GUI Front Panel Components GUI development with Matlab: Other GUI Components 1 Other GUI components In this section, we will.
GUIs Basic Concepts. GUI GUI : Graphical User Interface Window/Frame : a window on the screen Controls/Widgets : GUI components.
User focused applications with epicsQt Andrew Rhyder Andrew Starritt 1.
EGR 115 Introduction to Computing for Engineers
Introduction to Matlab Module #10 Page 1 Introduction to Matlab Module #10 – Creating Graphical User Interfaces Topics 1.Overview of GUI Development using.
MATLAB and SimulinkLecture 61 To days Outline Graphical User Interface (GUI) Exercise on this days topics.
Ganga/Dirac Data Management meeting October 2003 Gennady Kuznetsov Production Manager Tools and Ganga (New Architecture)
BOY, A Modern Graphical Operator Interface Editor and Runtime Xihui Chen, Kay Kasemir RAD Control Group.
Dive Into® Visual Basic 2010 Express
Java FX: Scene Builder.
Internet Made Easy! Make sure all your information is always up to date and instantly available to all your clients.
CST 1101 Problem Solving Using Computers
INF230 Basics in C# Programming
Object Orientated Programming using C#
Graphical User Interface in MATLAB
Visual Basic Code & No.: CS 218
Introduction to Computer CC111
ATS Application Programming: Java Programming
Basic Controls and Plugins
Chapter 8: Writing Graphical User Interfaces
Chapter 2 – Introduction to the Visual Studio .NET IDE
3.01 Apply Controls Associated With Visual Studio Form
Fast App Creation with APEX Blueprints
3.01 Apply Controls Associated With Visual Studio Form
Working with Dialogs and Controls
Introduction to the Visual C# 2005 Express Edition IDE
COSC-4840 Software Engineering
CaQtDM: a Qt-based EPICS display manager, status report Helge Brands, Anton Mezger, Paul Scherrer Institut At the Paul Scherrer Institut the new Qt-based.
caQtDM: future use of a display manager
VISUAL BASIC.
Hands-on Introduction to Visual Basic .NET
Understanding the Visual IDE
Digital Image Processing
Lecture Set 11 Creating and Using Classes
The Basic Usage and The Event Handling in Glade.
Chapter 15: GUI Applications & Event-Driven Programming
Constructors, GUI’s(Using Swing) and ActionListner
Overview of My Experience With C++
Database Management System
Overview of the IDE Visual Studio .NET is Microsoft’s Integrated Development Environment (IDE) for creating, running and debugging programs (also.
Chapter 8 Objects and Classes Part 2
Chapter 4 Enhancing the Graphical User Interface
Presentation transcript:

Qt GUI and IDE development in EPICS Andrew Rhyder Senior Controls Engineer Australian Synchrotron

EPICS GUI alternatives EDM MEDM CSS wxPython Borland Delphi (AS) Qt/Python (Diamond) KWT (PAL) Tcl/tk KEK Matlab Labview Looking for a GUI solution in 2008 Standardise GUIs Lifetime of openMotif with implications for medm Aging style Scope of personel resources for GUI development

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 .edl files Edm – opens .adl files ASgui – opens .ui files  Part of QCa framework CSS? Application model A 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 consistant 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’ QCa widgets live at design time

IDE – Qt’s Creator

Display Application - ASgui

Class usage

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

CaObject part 1

CaObject part 2

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

QCaObject

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

QCaFloating

QCaInteger

QCaString

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

QCaLabel

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

QCaLabelPlugin

QCaLabelPlugin

QCa Framwork 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 QCaSlider QCaLineEdit QCaSpinBox QCaPushButton QCaComboBox QCaShape QCaPlot EPICS aware graphical Qt plugins. Adds Qt plugin interfaces to EPICS aware widgets. QCaLabelPlugin QCaSliderPlugin QCaLineEditPlugin QCaSpinBoxPlugin QCaPushButtonPlugin QCaComboBoxPlugin QCaShapePlugin QCaPlotPlugin GUI support widgets Implements Qt based widgets that support control system GUIs. These widgets to not access the CA library. AsGuiForm Link GuiPushButton CmdPushButton

Processing CA callbacks within QCa

Processing CA callbacks within QCa

QCaShape widget example

Plot widget example

Simple camonitor example

Variable substitution A form can be designed to accept substitutions from the command line, or from the form it is embedded within Default substitutions aid form design

ASgui - Single instance startup Command line switch –s will force an existing instance to display the required form.

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

Avoiding database support for GUIs Qt’s standard signals and slots, with the QCa link widget allows rich interaction between display widgets without the need for EPICS PV performing calculations and logic. For example: A mode switch enabling text entry fields or push buttons A combo box selecting a tab on a sub form

Ongoing development Add properties to ensure 100% coverage of edm/medm functionality Rich set of properties for plot widget Cut and past from widgets ASgui window menu Doxygen doco Conversion tools???

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

Australian Synchrotron www.synchrotron.org.au Master Pres Template AS-PM-0110 Rev0