Accessing Middleware from Qt, QML Or HTML5 Basyskom

Accessing Middleware from Qt, QML Or HTML5 Basyskom

Accessing Middleware from Qt, QML or HTML5 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 services requiring specialist knowhow Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 2/33 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 Middleware Access from Qt, QML, HTML5 3 – Apps 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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 4/33 Solution: Reuse of Software l Human Machine Interface — Custom User Functionality Features — 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! Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 5/33 Requirements to Middleware l Technology Choice Middleware — C/C++ User — Via IPC Interface l How to access Middleware? ? — Little coding overhead — Speed — Robust, Type safety Middleware — Reusable, maintainable Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 6/33 Alternative Technologies for Embedded HMI l Access to middleware depends on HMI technology l Alternatives: 1 2 3 4 Qt QML Plain HTML5 Extended HTML5 application application application application ? Qt Custom Middleware + QML + WebKit + Backend Embedded Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 7/33 Middleware Access from Qt & QML Middleware Access from Qt, QML, HTML5 8 Middleware Access from Qt UI l About Qt — C++ Development Framework — Many libraries and modules l C++ => Straightforward Middleware Integration Qt application — Through function calls Custom — Signals & slots Qt Middleware — IPC, e.g. DBUS Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 9/33 Example - Middleware l Small Library l Inherits from QObject l Triggers actions l Sets values, notifies about changes l Abstracts backend Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 10/33 Example – Qt UI l Uses Our Middleware Library l Creates GUI l Access Middleware Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 11/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 12/33 Middleware Access from QML l About QML — Design centric — Simple And Fast — Low Barrier To Entry — Animations come at no cost QML apps — Next generation QML uses modern GPU acceleration — As QML is part of Qt it can be extended with classic Qt technologies (C++, JavaScript QMetaObject system) Custom Qt Middleware Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 13/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 14/33 Example – QML UI l Don't forget to emit signals whenever your underlying model changes: — Get property bindings for free Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 15/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: Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 16/33 Example – QML UI l Example QML file l Import the module l The formerly designed classes act as an interface to the middleware Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 17/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: Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 18/33 Models l The other way around: — Export your models as context properties — attach them to your global namespace — Use it in QML ... ... Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 19/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) Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 20/33 Middleware Access from HTML5 Middleware Access from Qt, QML, HTML5 21 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 — HTML5 apps are usable on standard devices like tablets/mobiles/etc. QtWebKit Custom Qt Middleware Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 22/33 Plain HTML5 – Middleware Access l Today: XMLHttpRequest — High level/high latency — No persistent connections HTML5 Apps l Tomorrow: Websockets — Fix XMLHttpRequest shortcomings Web Engine — Might come to QML (QTBUG-26298) HTTP Server/Wrapper l How To Use A Custom Embedded Middleware Custom Middleware — Middleware uses HTTP server (or wrapper) Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 23/33 Plain HTML Example - XMLHttpRequest l Daily bread of a web developer l Noone uses XMLHttpRequest l Everyone uses libraries (jQuery/YUI/...) Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 24/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 HTML5 Apps QtWebKit Custom Qt Middleware Linux Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 25/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 26/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 27/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 28/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) Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 29/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 Middleware Access from Qt, QML, HTML5 14.11.2012 Eva Brucherseifer 30/33 I Conclusion – Qt straight forward C++ integration of middleware not suitable for touch UI – QML very quick creation of custom HMI middleware integration through Qt mechanisms – HTML5 broad developer base more complicated to connect to middleware Middleware Access from Qt, QML, HTML5 31 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 Middleware Access from Qt, QML, HTML5 32 I Dr. Eva Brucherseifer I basysKom GmbH Managing Director & Sales Robert-Bosch-Str. 7 [email protected] 64293 Darmstadt Germany [email protected] I Berthold Krevert +49 (6151) 870 589 101 Software Engineer www.basyskom.com [email protected] I Sumedha Widyadharma Senior Embedded Engineer [email protected] Middleware Access from Qt, QML, HTML5 33.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    33 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us