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
Lessons Learned from Building 100+ C++/Qt/QML Devices
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 (20)

PDF
Best Practices in Qt Quick/QML - Part III
ICS
 
PDF
Basics of Model/View Qt programming
ICS
 
PDF
Qt Application Programming with C++ - Part 2
Emertxe Information Technologies Pvt Ltd
 
PDF
Best Practices in Qt Quick/QML - Part 3
ICS
 
PDF
Best Practices in Qt Quick/QML - Part 1 of 4
ICS
 
PDF
Qt programming-using-cpp
Emertxe Information Technologies Pvt Ltd
 
ODP
Qt 5 - C++ and Widgets
Juha Peltomäki
 
PDF
Qt Application Programming with C++ - Part 1
Emertxe Information Technologies Pvt Ltd
 
PPTX
Qt for beginners part 1 overview and key concepts
ICS
 
PDF
02 - Basics of Qt
Andreas Jakl
 
PPTX
Qt Qml
Steven Song
 
PDF
Qt for Beginners Part 3 - QML and Qt Quick
ICS
 
PDF
Best Practices in Qt Quick/QML - Part 4
ICS
 
PDF
Introduction to the Qt Quick Scene Graph
ICS
 
PDF
Qt and QML performance tips & tricks for Qt 4.7
Pasi Kellokoski
 
PPT
Qt Technical Presentation
Daniel Rocha
 
PDF
QThreads: Are You Using Them Wrong?
ICS
 
PPTX
Introduction to Qt
Puja Pramudya
 
PDF
Introduction to Qt Creator
Qt
 
PDF
State of the Art OpenGL and Qt
ICS
 
Best Practices in Qt Quick/QML - Part III
ICS
 
Basics of Model/View Qt programming
ICS
 
Qt Application Programming with C++ - Part 2
Emertxe Information Technologies Pvt Ltd
 
Best Practices in Qt Quick/QML - Part 3
ICS
 
Best Practices in Qt Quick/QML - Part 1 of 4
ICS
 
Qt 5 - C++ and Widgets
Juha Peltomäki
 
Qt Application Programming with C++ - Part 1
Emertxe Information Technologies Pvt Ltd
 
Qt for beginners part 1 overview and key concepts
ICS
 
02 - Basics of Qt
Andreas Jakl
 
Qt Qml
Steven Song
 
Qt for Beginners Part 3 - QML and Qt Quick
ICS
 
Best Practices in Qt Quick/QML - Part 4
ICS
 
Introduction to the Qt Quick Scene Graph
ICS
 
Qt and QML performance tips & tricks for Qt 4.7
Pasi Kellokoski
 
Qt Technical Presentation
Daniel Rocha
 
QThreads: Are You Using Them Wrong?
ICS
 
Introduction to Qt
Puja Pramudya
 
Introduction to Qt Creator
Qt
 
State of the Art OpenGL and Qt
ICS
 

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

PDF
Creating Advanced GUIs for Low-power MCUs with Qt
ICS
 
PDF
Qt Technology Overview for: MedAcuity
Qt
 
PDF
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Qt
 
PDF
Qt Software Development Framework - Medical
Qt
 
PPTX
Qt Oss to Commercial 2019-09-10
FedericoGuerinoni
 
PDF
An In-Depth Look Into Microcontrollers
ICS
 
PDF
Migrating from Photon to Qt
Janel Heilbrunn
 
PDF
Migrating from Photon to Qt
ICS
 
PDF
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
Ron Munitz
 
PDF
Companion App Design with Qt
Qt
 
PPTX
Modern microcontroller (mcu) application development with qt
Qt
 
PDF
Meet qt intro
ISB Vietnam Corporation
 
PDF
Meet qt intro
ISBVN
 
PDF
Qt Automotive Suite - under the hood // Qt World Summit 2017
Johan Thelin
 
PDF
Choosing an Embedded GUI: Comparative Analysis of UI Frameworks
ICS
 
PDF
Develer - Company Profile
Develer S.r.l.
 
PDF
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Qualcomm Developer Network
 
PDF
Improve Time to Market for Industrial Edge Devices
Qt
 
PDF
Develer - Company Profile
Francesco Pallanti
 
PDF
Crossware-Introduction_AmitDhagat-reduced.pdf
v89wytwpyn
 
Creating Advanced GUIs for Low-power MCUs with Qt
ICS
 
Qt Technology Overview for: MedAcuity
Qt
 
Driving Down Automotive Costs for Richer HMIs with Qt & i.MX RT1170
Qt
 
Qt Software Development Framework - Medical
Qt
 
Qt Oss to Commercial 2019-09-10
FedericoGuerinoni
 
An In-Depth Look Into Microcontrollers
ICS
 
Migrating from Photon to Qt
Janel Heilbrunn
 
Migrating from Photon to Qt
ICS
 
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
Ron Munitz
 
Companion App Design with Qt
Qt
 
Modern microcontroller (mcu) application development with qt
Qt
 
Meet qt intro
ISBVN
 
Qt Automotive Suite - under the hood // Qt World Summit 2017
Johan Thelin
 
Choosing an Embedded GUI: Comparative Analysis of UI Frameworks
ICS
 
Develer - Company Profile
Develer S.r.l.
 
Developing for Industrial IoT with Linux OS on DragonBoard™ 410c: Session 3
Qualcomm Developer Network
 
Improve Time to Market for Industrial Edge Devices
Qt
 
Develer - Company Profile
Francesco Pallanti
 
Crossware-Introduction_AmitDhagat-reduced.pdf
v89wytwpyn
 
Ad

More from ICS (20)

PDF
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
PDF
Medical Device Cybersecurity Threat & Risk Scoring
ICS
 
PDF
Exploring Wayland: A Modern Display Server for the Future
ICS
 
PDF
Threat Modeling & Risk Assessment Webinar: A Step-by-Step Example
ICS
 
PDF
8 Mandatory Security Control Categories for Successful Submissions
ICS
 
PDF
Future-Proofing Embedded Device Capabilities with the Qt 6 Plugin Mechanism.pdf
ICS
 
PDF
Medical Device Cyber Testing to Meet FDA Requirements
ICS
 
PDF
Threat Modeling and Risk Assessment Webinar.pdf
ICS
 
PDF
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
ICS
 
PDF
Webinar On-Demand: Using Flutter for Embedded
ICS
 
PDF
A Deep Dive into Secure Product Development Frameworks.pdf
ICS
 
PDF
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
ICS
 
PDF
Practical Advice for FDA’s 510(k) Requirements.pdf
ICS
 
PDF
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
ICS
 
PDF
Overcoming CMake Configuration Issues Webinar
ICS
 
PDF
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
ICS
 
PDF
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
ICS
 
PDF
Quality and Test in Medical Device Design - Part 1.pdf
ICS
 
PDF
Creating Digital Twins Using Rapid Development Techniques.pdf
ICS
 
PDF
Secure Your Medical Devices From the Ground Up
ICS
 
Porting Qt 5 QML Modules to Qt 6 Webinar
ICS
 
Medical Device Cybersecurity Threat & Risk Scoring
ICS
 
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Threat Modeling & Risk Assessment Webinar: A Step-by-Step Example
ICS
 
8 Mandatory Security Control Categories for Successful Submissions
ICS
 
Future-Proofing Embedded Device Capabilities with the Qt 6 Plugin Mechanism.pdf
ICS
 
Medical Device Cyber Testing to Meet FDA Requirements
ICS
 
Threat Modeling and Risk Assessment Webinar.pdf
ICS
 
Secure-by-Design Using Hardware and Software Protection for FDA Compliance
ICS
 
Webinar On-Demand: Using Flutter for Embedded
ICS
 
A Deep Dive into Secure Product Development Frameworks.pdf
ICS
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
ICS
 
Practical Advice for FDA’s 510(k) Requirements.pdf
ICS
 
Accelerating Development of a Safety-Critical Cobot Welding System with Qt/QM...
ICS
 
Overcoming CMake Configuration Issues Webinar
ICS
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
ICS
 
Designing and Managing IoT Devices for Rapid Deployment - Webinar.pdf
ICS
 
Quality and Test in Medical Device Design - Part 1.pdf
ICS
 
Creating Digital Twins Using Rapid Development Techniques.pdf
ICS
 
Secure Your Medical Devices From the Ground Up
ICS
 
Ad

Recently uploaded (20)

PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
PDF
July Patch Tuesday
Ivanti
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
IoT-Powered Industrial Transformation – Smart Manufacturing to Connected Heal...
Rejig Digital
 
July Patch Tuesday
Ivanti
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 

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
  • 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 > [email protected] > https://www.linkedin.com/in/peterwinston/