SlideShare a Scribd company logo
1 of 67
Download to read offline
Lessons Learned
from Building 100+
C++/Qt/QML Devices
Peter Winston,CEO, Integrated Computer Solutions
Peter Winston, Chief Executive Officer
Peter founded Integrated Computer
Solutions, Inc. (ICS)in 1987. Through his
leadership and innovation, the company
has experienced continued growth,
expanded across the globe and today is
focused on helping clients design and
deliver powerful applications on
touchscreen and embedded technology.
About ICS
About ICS
> Inventing the future
• ICS helps companies design, develop, and
productize touch, gesture and voice-enabled
solutionsthat dramatically improve customer
experience
> Qt Software Development Services & Training
• Our average developer has 15 years of Qt experience
> Full Suite of User Experience (UX) Design Services
• Design studio, Boston UX
Our Markets
Automotive
Industrial Consumer
Aerospace & DefenseMedical & Life Sciences
Commercial Kitchen
A Few of Our Customers
Why Projects Fail
And how to set them up to succeed
Unknowns
Why It’s Hard to Build a Modern Device
Elements of Modern Devices
> Graphic design
> Standard controls
> Interactive controls
> Animation
> Real Time
> Complex device control
> Sensors and actuators
Elements of Modern Devices
> Settings
> Wifi, Bluetooth, NFC, GPS
> On screen keyboard
> Charts
> Video
> Voice
> Sound
Elements of Modern Devices
> Administrative console
> Settings
> Alarms
> Error logging
> Security
> Over the air updates
> Usage analytics
Elements of Modern Devices
> Websockets- web pages, PDFs
> 2nd screen/mobile/web interface
> Indoor location sensors
> Maps and navigation
> Internal monitoring
Elements of Modern Devices
> Users- who expect a great interface
> And things should just work
> Back
> Undo
> Preferences
While….
> Running great on cheap hardware
Why It’s Hard to Build a Modern Device
Project Principles
> Find risk early
> Use UX to test and nail down features
> Build simple prototypes for most difficult parts
> Use experienced staff on each component
> Test throughout
> Reuse software wherever possible
Qt UI Principles
> Separate UI from backend of application
• Never put application logic into QML component
• Keep flexibility between layers
> More C++ / Less QML
> Let UX lead, and implement the details
• Pixel perfect, with sound, motion, etc.
Layered Architecture for Qt HMI’s
Name Me
Name Me
Name Me
Layered Software
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
call()
Signal()
> Make layers testable
> State machine for navigation and event
dispatch — flexible yet testable
> Make components reusable
Device Architecture
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
Device Control
Display Screen
Device Architecture
Device Control
Display Screen
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
Device Architecture
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
Display Screen
Over-the-Air Updates
Analytics
Commerce
Support
Data Storage
Voice Control
Mobile interface
Secure
Access
Device Control
Device Architecture
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
Device Control
Display Screen
Over-the-Air Updates
Analytics
Commerce
Support
Data Storage
Voice Control
Mobile interface
Secure
Access
Device Architecture
Device Control and I/O
User interface (C++)
GUI presentation (QML)
Platform & device drivers
Messaging
Framework
&
Rules engine Data
Application
logic
Display Screen
Over-the-Air Updates
Analytics
Commerce
Support
Data Storage
Voice Control
Mobile interface
Secure
Access
Device Control
Example Project
> Is there a typical HMI?
Open Source Ventilator
Main Screen
Platform and Dev Environment
> Platform
> Raspberry Pi 4- 2 Gig Ram
> 10” touchscreen
> OS- up to ICS (Raspbian or Yocto)
> Toolkit - up to ICS Qt/QML (OpenGL?)
Electrical Design
Custom RespiraWorks PCB
Blower
Display +
Alarms
Fuse
12V IN
Pressure
Flow (dP)
Flow (dP)
5V Supply
Humidifier
Sensing
tubes
Flashing
Light/
Alarm
Blower Driver
12V Power
5V Power
Signal
Voltage Monitor
FILTERING
Outlet
Solenoid
Heater Switch
Solenoid Switch
STM-32
Raspberry Pi
> Identify requirements
UX Design
Wireframes
Wireframes Continued
7/23/2020
Wireframes Continued
7/23/2020
Choice of Themes
7/30/2020
ProjectRed UI
8/1/2020
8/1/2020
Flow
UX Process
Requirements
User Stories
Wireframes
Graphic design
Flow
UX→ UI
Requirements
User Stories
Wireframes
Graphic design
Flow
User interface
Navigation
The UI Simulator
> Test UX and UI
ICS UI Simulator Architecture
Hardware Software
Update
Display User interface (C++)
GUI presentation (QML)
Non-target hardware
Web/assembly
Framework to support
navigation, respirator state,
and sample data
{
UI Simulator
UI Simulator
Allows control and display of all parts of the UI without a working device
UI Simulator Results
Alarm Settings- Old vs New
6/15/2020 8/13/2020
Alarm Settings Redux
Alarm Setting Detail
Ventilator Settings - Drawer
Collapsed Expanded
The Wave Form
> Identify and move risk forward
The Wave Form- Detail
ProjectRed main screen 8/13/2020
> How fast?
> Real time?
> Overwrite or scroll?
> Signal processing?
> QML, OpenGL, or GPU
odd
Recorded Prototype Waveforms
> Plan
> Start early
> Test on target HW
Application Logic
Workflow/State Machine
Communication
Message Driven GUI
> Insulates UI from changes made to MCU interface
• Using“Google Protocol Buffers”framework
- Send messages to MCU to update parameters
- Query MCU for response and update GUI accordingly
Integrated Computer Solutions Inc. www.ics.com
Data connector
Connects QSerialPort data with Qt properties
int tidalVolume
int Peep
int pPeak
int mVI
int Rate
int vti
Qt Signals trigger
screen updated
Data Connector
MCU
Serial data Update every 30ms
everys
Integrated Computer Solutions Inc. www.ics.com
UI - Backend Interface
“GUIMessages” object methods
getConfigurationCmd (query MCU for GUI configuration file)
startTestCmd (request MCU to start test procedure)
getTestStatusCmd (query MCU for tests results)
runFunctionCmd (request MCU to run a function)
Device Simulator
> Unit test the HMI
Plugins Based Backend
> Backend split into two plugins:
• Production code backend that connects to MCU hardware
• Demo backend for development powered by simulator
Allows for fast and easy switch between development and
production code. Share the sameinterface.
Device Simulator
Device simulator stands in for
the MCU, sending and
receiving simulated data
Enables testing of edge cases
and error conditions
In this case it was playback of
recorded data
Testing communications API,
waveform and alerts,
conditions
ICS Device Architecture
Hardware Software
Update
Display
Trigger
Action
Device Control and I/O
Application
logic
User interface (C++)
GUI presentation (QML)
Non-target platform
Data
Rules
engine &
Framework
Device Simulator
Replaces hardware I/O
Integration and Testing
ICS Advantage
> Using layers forces each layer to be independent of the others, which in
turn lets us work in parallel to bring the schedule in.
> Doing many projects this way creates a standard process, toolchain and a
framework which facilities the layers and reusable components.
> This in turn delivers more higher quality projects and enables us to surge
on project when required.
Recap
> Identify risk early
> Use UX to define requirements
> Build a UI prototype and test it with customers
> Build in layers and build up to the application
> Get the hard part working early
> Create components that are both testable and reusable
> Be prepared to surge, or to limit scope
How Can We Help You?
Deliver the best Qt applications for touch, embedded and
desktop with ICS
> New Qt projects benefit from our proven process
> Existing projects finish faster with our Qt expertise
www.ics.com• www.bostonux.com
Questions or Comments
> peter.winston@ics.com
> https://www.linkedin.com/in/peterwinston/

More Related Content

What's hot

Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QMLAlan Uthoff
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programmingICS
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIICS
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4ICS
 
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3ICS
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickICS
 
Qt Internationalization
Qt InternationalizationQt Internationalization
Qt InternationalizationICS
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? ICS
 
Applying the Presentation Model Design Pattern in Qt
Applying the Presentation Model Design Pattern in QtApplying the Presentation Model Design Pattern in Qt
Applying the Presentation Model Design Pattern in QtJuan de Hoyos
 
Qt Design Patterns
Qt Design PatternsQt Design Patterns
Qt Design PatternsYnon Perek
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Pasi Kellokoski
 
Qt test framework
Qt test frameworkQt test framework
Qt test frameworkICS
 

What's hot (20)

UI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QMLUI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QML
 
Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QML
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programming
 
Best Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part IIIBest Practices in Qt Quick/QML - Part III
Best Practices in Qt Quick/QML - Part III
 
Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4Best Practices in Qt Quick/QML - Part 4
Best Practices in Qt Quick/QML - Part 4
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
 
02 - Basics of Qt
02 - Basics of Qt02 - Basics of Qt
02 - Basics of Qt
 
Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3Best Practices in Qt Quick/QML - Part 3
Best Practices in Qt Quick/QML - Part 3
 
Qt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt QuickQt for Beginners Part 3 - QML and Qt Quick
Qt for Beginners Part 3 - QML and Qt Quick
 
Qt programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Qt programming-using-cpp
 
Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2Qt Application Programming with C++ - Part 2
Qt Application Programming with C++ - Part 2
 
Qt Internationalization
Qt InternationalizationQt Internationalization
Qt Internationalization
 
Hello, QML
Hello, QMLHello, QML
Hello, QML
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
 
Applying the Presentation Model Design Pattern in Qt
Applying the Presentation Model Design Pattern in QtApplying the Presentation Model Design Pattern in Qt
Applying the Presentation Model Design Pattern in Qt
 
Qt Design Patterns
Qt Design PatternsQt Design Patterns
Qt Design Patterns
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
Qt test framework
Qt test frameworkQt test framework
Qt test framework
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 

Similar to Lessons Learned from Building 100+ C++/Qt/QML Devices

InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...InSource Solutions
 
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...Design World
 
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0AVEVA
 
Qiang Yu Resume
Qiang Yu Resume Qiang Yu Resume
Qiang Yu Resume Qiang Yu
 
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...Edge AI and Vision Alliance
 
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUSSTM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUScmorineau
 
InduSoft Building Automation and Energy Management Webinar
InduSoft Building Automation and Energy Management WebinarInduSoft Building Automation and Energy Management Webinar
InduSoft Building Automation and Energy Management WebinarAVEVA
 
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxEclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxBrett Hackleman
 
Michael_Joshua_Validation
Michael_Joshua_ValidationMichael_Joshua_Validation
Michael_Joshua_ValidationMichaelJoshua
 
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Unity Technologies
 
Exor jmobile introduction
Exor jmobile introductionExor jmobile introduction
Exor jmobile introductionJimmy Hsu
 

Similar to Lessons Learned from Building 100+ C++/Qt/QML Devices (20)

InTouch Machine Edition Advantages and Features
InTouch Machine Edition Advantages and FeaturesInTouch Machine Edition Advantages and Features
InTouch Machine Edition Advantages and Features
 
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
InSource 2017 IIoT Roadshow: The Future of HMI/SCADA and Industrial Cloud Pla...
 
Parimal Resume
Parimal ResumeParimal Resume
Parimal Resume
 
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...
“eXtending” the Automation Toolbox: Introduction to TwinCAT 3 Software and eX...
 
Nagaraj belur
Nagaraj belurNagaraj belur
Nagaraj belur
 
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0A Special Introduction to the Upcoming InduSoft Web Studio 8.0
A Special Introduction to the Upcoming InduSoft Web Studio 8.0
 
Qiang Yu Resume
Qiang Yu Resume Qiang Yu Resume
Qiang Yu Resume
 
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...
“The Future of AI is Here Today: Deep Dive into Qualcomm’s On-Device AI Offer...
 
Boodskap overview
Boodskap overview Boodskap overview
Boodskap overview
 
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUSSTM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
 
InduSoft Building Automation and Energy Management Webinar
InduSoft Building Automation and Energy Management WebinarInduSoft Building Automation and Energy Management Webinar
InduSoft Building Automation and Energy Management Webinar
 
Resume_Pratik
Resume_PratikResume_Pratik
Resume_Pratik
 
Resume marky20181025
Resume marky20181025Resume marky20181025
Resume marky20181025
 
Rashmi_Resume
Rashmi_ResumeRashmi_Resume
Rashmi_Resume
 
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems ToolboxEclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
EclipseEmbeddedDay2009-OSGi: Best Tool In Your Embedded Systems Toolbox
 
veera (updated)
veera (updated)veera (updated)
veera (updated)
 
TAXTRON Profile_PDF
TAXTRON Profile_PDFTAXTRON Profile_PDF
TAXTRON Profile_PDF
 
Michael_Joshua_Validation
Michael_Joshua_ValidationMichael_Joshua_Validation
Michael_Joshua_Validation
 
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
Engineering.com webinar: Real-time 3D and digital twins: The power of a virtu...
 
Exor jmobile introduction
Exor jmobile introductionExor jmobile introduction
Exor jmobile introduction
 

More from ICS

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfICS
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...ICS
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarICS
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfICS
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfICS
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfICS
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfICS
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up ICS
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfICS
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesICS
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureICS
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt UsersICS
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...ICS
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer FrameworkICS
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsICS
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyICS
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoTICS
 

More from ICS (20)

The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Practical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdfPractical Advice for FDA’s 510(k) Requirements.pdf
Practical Advice for FDA’s 510(k) Requirements.pdf
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
 
Overcoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues WebinarOvercoming CMake Configuration Issues Webinar
Overcoming CMake Configuration Issues Webinar
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdfDesigning and Managing IoT Devices for Rapid Deployment - Webinar.pdf
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
 
Quality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdfQuality and Test in Medical Device Design - Part 1.pdf
Quality and Test in Medical Device Design - Part 1.pdf
 
Creating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdfCreating Digital Twins Using Rapid Development Techniques.pdf
Creating Digital Twins Using Rapid Development Techniques.pdf
 
Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up Secure Your Medical Devices From the Ground Up
Secure Your Medical Devices From the Ground Up
 
Cybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdfCybersecurity and Software Updates in Medical Devices.pdf
Cybersecurity and Software Updates in Medical Devices.pdf
 
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical DevicesMDG Panel - Creating Expert Level GUIs for Complex Medical Devices
MDG Panel - Creating Expert Level GUIs for Complex Medical Devices
 
How to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management SolutionHow to Craft a Winning IOT Device Management Solution
How to Craft a Winning IOT Device Management Solution
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
IoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with AzureIoT Device Fleet Management: Create a Robust Solution with Azure
IoT Device Fleet Management: Create a Robust Solution with Azure
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt Users
 
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
Software Update Mechanisms: Selecting the Best Solutin for Your Embedded Linu...
 
Qt Installer Framework
Qt Installer FrameworkQt Installer Framework
Qt Installer Framework
 
Bridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory TeamsBridging the Gap Between Development and Regulatory Teams
Bridging the Gap Between Development and Regulatory Teams
 
Overcome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case StudyOvercome Hardware And Software Challenges - Medical Device Case Study
Overcome Hardware And Software Challenges - Medical Device Case Study
 
User Experience Design for IoT
User Experience Design for IoTUser Experience Design for IoT
User Experience Design for IoT
 

Recently uploaded

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 

Recently uploaded (20)

Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 

Lessons Learned from Building 100+ C++/Qt/QML Devices

  • 1. Lessons Learned from Building 100+ C++/Qt/QML Devices Peter Winston,CEO, Integrated Computer Solutions
  • 2. Peter Winston, Chief Executive Officer Peter founded Integrated Computer Solutions, Inc. (ICS)in 1987. Through his leadership and innovation, the company has experienced continued growth, expanded across the globe and today is focused on helping clients design and deliver powerful applications on touchscreen and embedded technology. About ICS
  • 3. About ICS > Inventing the future • ICS helps companies design, develop, and productize touch, gesture and voice-enabled solutionsthat dramatically improve customer experience > Qt Software Development Services & Training • Our average developer has 15 years of Qt experience > Full Suite of User Experience (UX) Design Services • Design studio, Boston UX
  • 4. Our Markets Automotive Industrial Consumer Aerospace & DefenseMedical & Life Sciences Commercial Kitchen
  • 5. A Few of Our Customers
  • 6. Why Projects Fail And how to set them up to succeed
  • 8.
  • 9. Why It’s Hard to Build a Modern Device
  • 10. Elements of Modern Devices > Graphic design > Standard controls > Interactive controls > Animation > Real Time > Complex device control > Sensors and actuators
  • 11. Elements of Modern Devices > Settings > Wifi, Bluetooth, NFC, GPS > On screen keyboard > Charts > Video > Voice > Sound
  • 12. Elements of Modern Devices > Administrative console > Settings > Alarms > Error logging > Security > Over the air updates > Usage analytics
  • 13. Elements of Modern Devices > Websockets- web pages, PDFs > 2nd screen/mobile/web interface > Indoor location sensors > Maps and navigation > Internal monitoring
  • 14. Elements of Modern Devices > Users- who expect a great interface > And things should just work > Back > Undo > Preferences
  • 15. While…. > Running great on cheap hardware
  • 16. Why It’s Hard to Build a Modern Device
  • 17. Project Principles > Find risk early > Use UX to test and nail down features > Build simple prototypes for most difficult parts > Use experienced staff on each component > Test throughout > Reuse software wherever possible
  • 18. Qt UI Principles > Separate UI from backend of application • Never put application logic into QML component • Keep flexibility between layers > More C++ / Less QML > Let UX lead, and implement the details • Pixel perfect, with sound, motion, etc.
  • 19. Layered Architecture for Qt HMI’s Name Me Name Me Name Me
  • 20. Layered Software Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic call() Signal() > Make layers testable > State machine for navigation and event dispatch — flexible yet testable > Make components reusable
  • 21. Device Architecture Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic Device Control Display Screen
  • 22. Device Architecture Device Control Display Screen Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic
  • 23. Device Architecture Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic Display Screen Over-the-Air Updates Analytics Commerce Support Data Storage Voice Control Mobile interface Secure Access Device Control
  • 24. Device Architecture Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic Device Control Display Screen Over-the-Air Updates Analytics Commerce Support Data Storage Voice Control Mobile interface Secure Access
  • 25. Device Architecture Device Control and I/O User interface (C++) GUI presentation (QML) Platform & device drivers Messaging Framework & Rules engine Data Application logic Display Screen Over-the-Air Updates Analytics Commerce Support Data Storage Voice Control Mobile interface Secure Access Device Control
  • 26. Example Project > Is there a typical HMI?
  • 29. Platform and Dev Environment > Platform > Raspberry Pi 4- 2 Gig Ram > 10” touchscreen > OS- up to ICS (Raspbian or Yocto) > Toolkit - up to ICS Qt/QML (OpenGL?)
  • 30. Electrical Design Custom RespiraWorks PCB Blower Display + Alarms Fuse 12V IN Pressure Flow (dP) Flow (dP) 5V Supply Humidifier Sensing tubes Flashing Light/ Alarm Blower Driver 12V Power 5V Power Signal Voltage Monitor FILTERING Outlet Solenoid Heater Switch Solenoid Switch STM-32 Raspberry Pi
  • 38. Flow
  • 40. UX→ UI Requirements User Stories Wireframes Graphic design Flow User interface Navigation
  • 41. The UI Simulator > Test UX and UI
  • 42. ICS UI Simulator Architecture Hardware Software Update Display User interface (C++) GUI presentation (QML) Non-target hardware Web/assembly Framework to support navigation, respirator state, and sample data { UI Simulator
  • 43. UI Simulator Allows control and display of all parts of the UI without a working device
  • 45. Alarm Settings- Old vs New 6/15/2020 8/13/2020
  • 48. Ventilator Settings - Drawer Collapsed Expanded
  • 49. The Wave Form > Identify and move risk forward
  • 50. The Wave Form- Detail ProjectRed main screen 8/13/2020 > How fast? > Real time? > Overwrite or scroll? > Signal processing? > QML, OpenGL, or GPU odd
  • 52. > Plan > Start early > Test on target HW
  • 56. Message Driven GUI > Insulates UI from changes made to MCU interface • Using“Google Protocol Buffers”framework - Send messages to MCU to update parameters - Query MCU for response and update GUI accordingly
  • 57. Integrated Computer Solutions Inc. www.ics.com Data connector Connects QSerialPort data with Qt properties int tidalVolume int Peep int pPeak int mVI int Rate int vti Qt Signals trigger screen updated Data Connector MCU Serial data Update every 30ms everys
  • 58. Integrated Computer Solutions Inc. www.ics.com UI - Backend Interface “GUIMessages” object methods getConfigurationCmd (query MCU for GUI configuration file) startTestCmd (request MCU to start test procedure) getTestStatusCmd (query MCU for tests results) runFunctionCmd (request MCU to run a function)
  • 59. Device Simulator > Unit test the HMI
  • 60. Plugins Based Backend > Backend split into two plugins: • Production code backend that connects to MCU hardware • Demo backend for development powered by simulator Allows for fast and easy switch between development and production code. Share the sameinterface.
  • 61. Device Simulator Device simulator stands in for the MCU, sending and receiving simulated data Enables testing of edge cases and error conditions In this case it was playback of recorded data Testing communications API, waveform and alerts, conditions
  • 62. ICS Device Architecture Hardware Software Update Display Trigger Action Device Control and I/O Application logic User interface (C++) GUI presentation (QML) Non-target platform Data Rules engine & Framework Device Simulator Replaces hardware I/O
  • 64. ICS Advantage > Using layers forces each layer to be independent of the others, which in turn lets us work in parallel to bring the schedule in. > Doing many projects this way creates a standard process, toolchain and a framework which facilities the layers and reusable components. > This in turn delivers more higher quality projects and enables us to surge on project when required.
  • 65. Recap > Identify risk early > Use UX to define requirements > Build a UI prototype and test it with customers > Build in layers and build up to the application > Get the hard part working early > Create components that are both testable and reusable > Be prepared to surge, or to limit scope
  • 66. How Can We Help You? Deliver the best Qt applications for touch, embedded and desktop with ICS > New Qt projects benefit from our proven process > Existing projects finish faster with our Qt expertise www.ics.com• www.bostonux.com
  • 67. Questions or Comments > peter.winston@ics.com > https://www.linkedin.com/in/peterwinston/