<<

PROGRAMMING CHALLENGES MOVING BEYOND SWING AND JAVAFX S. Bart Pedersen, S. Jackson, CERN, Geneva, Switzerland

Objectives Results Outlook

Motivation : Oracle to stop support for Python using PyQtGraph chosen. Big interest for web interface Java Swing and JavaFX technologies Quick learning curve Fixed displays tested Scientific and mathematical libraries Multi-platforms Identifying the best programming language to write GUI Performance of charting components Client-server mechanism Documentation and huge web community GUI standardization Outlook for improving our GUI Long-term maintainability Combination with Python architecture More guidance for code structure Security Standardization vs. ad-hoc development Real-time chart performance Results Django / FLASK / DASH / ? Python / Java PlotLy charts Historical GUI Development Technology Choices Java HTML / JavaScript Html PyQtGraph JSON PyQt5 JavaScript Python 3.6 Web Java Python Web Python Java Interfaces Swing Qt + Java Swing Java Python Java Swing Swing Java Qt Qt Python JavaFX ++ QML Qt

PyQtGraph PyQt5 Python 3.6

Example : Python/PyQt Expert GUI

Links between the Expert GUI Program, the Hardware and the Databases Requested Graphical Performance

1D Array 10000 points 10 Hz 5 x 1D Array 2000 10 Hz Logging Driver Python HW 2D Array 100 x 100 10 Hz GUI Post- C++ 10 x 1D Array 10000 1 Hz Mortem Server 4 x 1D Array 100000 1 Hz 2D Array 512 x 512 1 Hz

Outlook Web Interface Combined with Java Example : Web Interface for Fixed or Python Data Source Server Displays (Acquisition Data)

Client Server

Driver Driver Driver

C++ Control Server C++ Control Server GUI Data Source C++ Control Server Web Server Interface Java - Python Python Script Python Script Python Script

CERN Beams Department (BE) Beam Instrumentation Group (BI) – Software Section (SW) [email protected] MOPHA173