First Technology Transfer

Standard and Advanced Technical Training, Consultancy and Mentoring

Course M402 Developing Qt Based Communication and Control Applications for Interacting With and Controlling PIC based Embedded Systems

Duration: 5 Days

Intended Audience

This course is aimed at Programmers who need a rapid and intensive introduction to application development using C++ and the Qt framework where the applications interact with and control embedded PIC based applications

Synopsis - Course Objectives

By the end of the course student should know and understand

  • The architecture and design of the Qt framework
  • The syntax and structure of the C++ programming language
  • Making use of inheritance, polymorphism, composition and aggregation in the design and implementation of C++ applications
  • Be able to create Qt Interfaces for interacting with and controlling embedded systems
  • Know how to implement applications using RS232, USB and TCP/IP to interact with the embedded target platform.
  • Various Microchip target platforms with pre-built applications will be used.
  • The course can be tailored to focus on particular kinds of applications and particular communications systems

Course Outline

  • Introduction to C++
    • Development and evolution of C# and .NET
    • Overview of Object Oriented concepts
    • Overview of .NET Common Language Infrastructure (CLI), .NET Managed Code Philosophy, CIL (Common Intermediate Language) and metadata
  • C++ - Intensive Introducion
    • Data types and control constructs
      • Implicit vs. explicit variables
      • Value types vs. reference types
    • Methods - Defining them and calling them
      • Specifying the Main method
      • Mechanisms for passing arguments and returning values
      • Scope and lifetime of variables
      • Exceptions and exception handling
    • C++ Classes
      • Defining a Class
        • Realising attributes with methods and properties
        • Constructors and initialisation
        • Method and constructor overloading
        • Inheritance and Polymorphism
      • Class instance - Object
        • Allocating memory with new
        • Passing initialisation values to constructors
        • Value allocation vs. reference allocation
        • Boxing and unboxing
        • Accessing properties and invoking methods
    • Working with the Standard Template Library and IOStreams
      • Namespaces - purpose, usage and syntax
      • I/O using the Console and stream classes
      • Introduction to C++ Templates
      • Standard and Generic collection classes - an overview
  • Class Relationships, Collections of Classes and Interfaces
    • Aggregation and Composition
      • References and how to manipulate them
      • Physical equivalence vs. logical equivalence
      • Deep copying vs. shallow copying
      • Inheritance and Polymorphism
      • Collection Library Classes
      • Generics
    • Virtual Methods and Interfaces
      • Specifying an interface
      • Implemeting an interface
      • Interface Polymorphism
      • Synergy between collection classes, generics and interfaces
  • Qt5 Application Development
    • Architecture of the Qt5 Framework
      • SIGNALs SLOTs and connections
      • Dialogs and Widgets
      • QMainWindow - menus, toolbars and the status bar
      • Subclassing Widgets
    • Layout Design and Management
      • Stacked layouts
      • Splitters
      • Scrolling areas
      • Dock windows
      • Multiple Document Interface applications
    • Event Processing and Interactivity
      • Event handlers
      • Event filters
      • Drag and drop
    • Layout Design and Management
      • Stacked layouts
      • Splitters
      • Scrolling areas
      • Dock windows
      • Multiple Document Interface applications
    • Graphics
      • QPainter and 2D graphics
      • Overview of OpenGl and 3D graphics
      • Basics of data plotting and visualisation
  • Programming Communications with a PIC Target Board
    • Serial communication over RS232
    • HID and CDC communication over USB
    • Sockets based communication over TCP/IP