SlideShare a Scribd company logo
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

In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QML
ICS
 
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
ICS
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
ICS
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QML
Alan Uthoff
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
Johan Thelin
 
02 - Basics of Qt
02 - Basics of Qt02 - Basics of Qt
02 - Basics of Qt
Andreas Jakl
 
Introduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene GraphIntroduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene Graph
ICS
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programming
ICS
 
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
Emertxe Information Technologies Pvt Ltd
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
ICS
 
Hello, QML
Hello, QMLHello, QML
Hello, QML
Jack Yang
 
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
Emertxe Information Technologies Pvt Ltd
 
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
 
Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6
ICS
 
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
Emertxe Information Technologies Pvt Ltd
 
Qt programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
Dragos Tudor Acostachioaie
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
ICS
 
Qt Framework Events Signals Threads
Qt Framework Events Signals ThreadsQt Framework Events Signals Threads
Qt Framework Events Signals Threads
Neera Mital
 
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
Pasi Kellokoski
 

What's hot (20)

In-Depth Model/View with QML
In-Depth Model/View with QMLIn-Depth Model/View with QML
In-Depth Model/View with QML
 
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
 
Best Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IVBest Practices in Qt Quick/QML - Part IV
Best Practices in Qt Quick/QML - Part IV
 
Introduction to QML
Introduction to QMLIntroduction to QML
Introduction to QML
 
Qt Workshop
Qt WorkshopQt Workshop
Qt Workshop
 
02 - Basics of Qt
02 - Basics of Qt02 - Basics of Qt
02 - Basics of Qt
 
Introduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene GraphIntroduction to the Qt Quick Scene Graph
Introduction to the Qt Quick Scene Graph
 
Basics of Model/View Qt programming
Basics of Model/View Qt programmingBasics of Model/View Qt programming
Basics of Model/View Qt programming
 
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
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
 
Hello, QML
Hello, QMLHello, QML
Hello, QML
 
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
 
QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong? QThreads: Are You Using Them Wrong?
QThreads: Are You Using Them Wrong?
 
Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6Introduction to the Qt State Machine Framework using Qt 6
Introduction to the Qt State Machine Framework using Qt 6
 
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 programming-using-cpp
Qt programming-using-cppQt programming-using-cpp
Qt programming-using-cpp
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
Qt Framework Events Signals Threads
Qt Framework Events Signals ThreadsQt Framework Events Signals Threads
Qt Framework Events Signals Threads
 
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
 

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

InTouch Machine Edition Advantages and Features
InTouch Machine Edition Advantages and FeaturesInTouch Machine Edition Advantages and Features
InTouch Machine Edition Advantages and Features
Wonderware InTouch Machine Edition
 
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
 
Nagaraj belur
Nagaraj belurNagaraj belur
Nagaraj 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
AVEVA
 
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
 
Boodskap overview
Boodskap overview Boodskap overview
Boodskap overview
NickithaSahayaCruzli
 
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUSSTM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
STM32JAVA EMBEDDED PLATFORMS FOR STM32 MCUS
cmorineau
 
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
AVEVA
 
Resume marky20181025
Resume marky20181025Resume marky20181025
Resume marky20181025
Marky0720 Marky
 
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
Brett 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 introduction
Jimmy 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

A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
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.pdf
ICS
 
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 Webinar
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
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.pdf
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
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
ICS
 
Basic Cmake for Qt Users
Basic Cmake for Qt UsersBasic Cmake for Qt Users
Basic Cmake for Qt Users
ICS
 
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 Framework
ICS
 
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
ICS
 
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
ICS
 

More from ICS (20)

A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
 
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
 

Recently uploaded

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 

Recently uploaded (20)

Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 

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/