Top Banner
Accessing Middleware from Qt, QML or HTML5
33

Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

May 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Accessing Middleware from Qt, QML or HTML5

Page 2: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 2/33

basysKom... introducing ourselves

l Embedded Software Engineering

— Partner for the development of innovative quality products

l Expertise in...

— Embedded R&D

— Embedded architecture design, middleware, HMI

— Open source standards & Linux stack

l Located in Germany, Darmstadt + Nürnberg

l Our Offering:

— consulting on strategic and operational selection and architecture of embedded technology and development processes

— solution delivery R&D including delivery of full components or servicesrequiring specialist knowhow

Page 3: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 3

The new digital lifestyle is changing user demand...This affects the software stack

I High demand for new digital lifestyle features in HMI

I Head unit needs to interact with other devices

– Smartphone

– Cloud

I Software features as a business model

– Pay per use

– Apps

Page 4: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 4/33

New Requirements to Software Architecture

l 1 – Reduce time to market

l 2 – Increase flexibility

— OS independency

— Device independency

— UI independency

l 3 – Improve quality of software

— Usability

— Security

— Stability

— Scalability

l Sustainable Software Architecture

Page 5: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 5/33

Solution: Reuse of Software

l Human Machine Interface

— Custom User Functionality

— Application Logic

— Design

l Middleware / Backends

— Access to Custom System Functionality

l Standard Components

— UI Framework, backends, OS, drivers, etc.

l Middleware is the Glue!

FeaturesFeatures

Page 6: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 6/33

Requirements to Middleware

l Technology Choice Middleware

— C/C++

— Via IPC

l How to access Middleware?

— Little coding overhead

— Speed

— Robust, Type safety

— Reusable, maintainableMiddleware

UserInterface

?

Page 7: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 7/33

Alternative Technologies for Embedded HMI

l Access to middleware depends on HMI technology

l Alternatives:

Embedded Linux

1Qt

application

Custom Middleware + Backend

2QML

application

3Plain HTML5

application

4Extended HTML5

application

Qt+ QML + WebKit

?

Page 8: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 8

Middleware Access from

Qt & QML

Page 9: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 9/33

Middleware Access from Qt UI

l About Qt

— C++ Development Framework

— Many libraries and modules

l C++ => Straightforward Middleware Integration

— Through function calls

— Signals & slots

— IPC, e.g. DBUS

Linux

Qt

Qt application

Custom Middleware

Page 10: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 10/33

Example - Middleware

l Small Library

l Inherits from QObject

l Triggers actions

l Sets values, notifies about changes

l Abstracts backend

Page 11: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 11/33

Example – Qt UI

l Uses Our Middleware Library

l Creates GUI

l Access Middleware

Page 12: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 12/33

Evaluation Qt

l High-quality, stable and well-tested framework APIs

— Touchscreen/animation complicated

— More suited for conventional desktop applications

l Pros

— Very flexible connectivity

— Frontend and backend can be managed in the same programming language

— One-stop shop

l Cons

— Cumbersome touch support

— Imperative UI 'design' (or use Designer)

— Only 'conventional' UI paradigms implemented

— Classic UI design, not very design centric

Page 13: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 13/33

Middleware Access from QML

l About QML

— Design centric

— Simple And Fast

— Low Barrier To Entry

— Animations come at no cost

— Next generation QML uses modern GPU acceleration

— As QML is part of Qt it can be extended with classic Qt technologies (C++, QMetaObject system)

Linux

Qt

QML apps

Custom Middleware

JavaScript

Page 14: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 14/33

Example – QML UI

l On the C++ side:

— Use Qt's MetaObject system to configure middleware

— Properties to set and read values

— Final properties to read states

l Expose actions with Q_INVOKABLE

Page 15: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 15/33

Example – QML UI

l Don't forget to emit signals whenever your underlying model changes:

— Get property bindings for free

Page 16: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 16/33

Example – QML UI

l Expose middleware as a plugin

l Use qmlRegisterType<Type>() to make your api visible in QML

l Use QmlDir to export module:

Page 17: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 17/33

Example – QML UI

l Example QML file

l Import the module

l The formerly designed classes act as an interface to the middleware

Page 18: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 18/33

Models

l Easy integration of Qt's data structures and models (QList, QAbstractItemModel)

l Example: Declare a Q_PROPERTY as part of your QML object:

l Use it in QML:

Page 19: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 19/33

Models

l The other way around:

— Export your models as context properties

— attach them to your global namespace

— Use it in QML

...

...

Page 20: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 20/33

Evaluation QML

l Pros

— Uses Qt's meta object system

— Access to all Qt + middleware functions

— Easy integration via signal and slots

— Properly designed middleware can be shared between Qt and QML frontends

l Cons

— More languages means a more complex technology stack (QML, JavaScript, C++)

— Higher minimum requirements (OpenGL ES 2.0)

Page 21: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 21

Middleware Access from

HTML5

Page 22: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 22/33

Middleware Access from HTML5 – An Overview

l About HTML5

— QtWebKit is an essential module of Qt5

— Development in HTML/CSS/JavaScript

— Very large HTML5 designer/developer community

— Modern UI features (e.g. multitouch/accelerated animation)

— HTML5 apps are usable on standard devices like tablets/mobiles/etc.

Linux

Qt

HTML5 Apps

Custom Middleware

QtWebKit

Page 23: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 23/33

Plain HTML5 – Middleware Access

l Today: XMLHttpRequest

— High level/high latency

— No persistent connections

l Tomorrow: Websockets

— Fix XMLHttpRequest shortcomings

— Might come to QML (QTBUG-26298)

l How To Use A Custom Embedded Middleware

— Middleware uses HTTP server (or wrapper)

Web Engine

HTTPServer/Wrapper

Linux

HTML5 Apps

Custom Middleware

Page 24: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 24/33

Plain HTML Example - XMLHttpRequest

l Daily bread of a web developer

l Noone uses XMLHttpRequest

l Everyone uses libraries (jQuery/YUI/...)

Page 25: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 25/33

Extended HTML5 – Middleware Access

l Extended Runtime using QtWebKit

— Use full Qt capabilities to connect middleware

— Provide APIs to JavaScript context

— Directly interact with Apps (Call JavaScript code from Qt)

— Connect signals/slots in your JavaScript code

Linux

Qt

HTML5 Apps

Custom Middleware

QtWebKit

Page 26: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 26/33

Extended HTML Example – Triggering A Qt Function

l Middleware C++ library

l Own Qt app with QWebView

l HTML File

l Add middleware object to JS context

l Call Q_INVOKABLEs

Page 27: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 27/33

Extended HTML Example 2 – QStringListModel + Knockout.js

l What about more complex data?

— Qt models are not directly usable

l Example with a QStringListModel

l Use Knockout.js (http://knockoutjs.com/)

— Model-View-View-Model JavaScript library

l Functionality

— Changes on a web-page get immediately propagated to the C++ backend

— This could be used to e.g. directly edit system settings

Page 28: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 28/33

Extended HTML Example 2 – QstringListModel + Knockout.js

l Web runtime exposes middleware stub into JS context

l Stub provides access to model and update function

l Data is automatically converted to/from JavaScript

Page 29: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 29/33

Extended HTML Example 2 – QstringListModel + Knockout.js

l The HTML side: Initialize Knockout with model

l Whenever entries are added/removed, Knockout tells the stub

l Reverse direction can be implemented by connecting signals in JavaScript (e.g. dataChanged)

Page 30: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 Eva Brucherseifer

14.11.2012 30/33

Evaluation HTML5 On QtWebKit

l It is possible to write interesting HMI using HTML5

l Pros

— Existing HTML5 apps will run out-of-the-box

— Access to Qt/middleware functions is possible (runtime modification)

l Cons

— Lots of mixed technologies (HTML/CSS/JavaScript/C++)

— Direct access to Qt/middleware functions requires runtime modification

— Leads to non-portable apps

— Translation layer for more complex models required

— No direct usage of Qt models

Page 31: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 31

I Conclusion

– Qtstraight forward C++ integration of middlewarenot suitable for touch UI

– QMLvery quick creation of custom HMI middleware integration through Qt mechanisms

– HTML5broad developer basemore complicated to connect to middleware

Page 32: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 32

I Conclusion

– Big advantage of Qt: Hybrid use ● Native Qt● QML● HTML5

– Clear Middleware – HMI separation enables● software reuse ● Quick HMI creation● Fast time-to-market of new use cases

Page 33: Accessing Middleware from Qt, QML or HTML5€¦ · — consulting on strategic and operational selection and architecture of embedded technology and development processes ... —

Middleware Access from Qt, QML, HTML5 33

I Dr. Eva BrucherseiferManaging Director & Sales

[email protected]

I Berthold KrevertSoftware Engineer

[email protected]

I Sumedha WidyadharmaSenior Embedded Engineer

[email protected]

I basysKom GmbHRobert-Bosch-Str. 7

64293 Darmstadt

Germany

[email protected]

+49 (6151) 870 589 101

www.basyskom.com