You are on page 1of 4

Syllabus

C++ Programming for CAN Bus Communication (Beginner to


Intermediate)

Course Scheme & Date


Course Duration Learning Method Date
10 days course (30 hours total) Onsite To Be Informed

Prerequisites
✓ A grasp of fundamental programming concepts like variables, data types, operators, control flow
(if/else statements, loops), and functions will be highly beneficial. This foundation will help you
understand how C++ structures code and how different elements interact.
✓ Familiarity with basic C++ syntax, data types (integers, floats, characters, etc.), arrays, pointers,
and basic object-oriented concepts (classes and objects) would be advantageous. Understanding
these fundamentals will allow you to write and comprehend C++ code effectively in the context
of CANBUS development.
✓ Having a basic understanding of digital signals, binary data, and digital communication concepts
can be helpful. CANBUS operates on digital principles, so some background knowledge can
provide a better context for the communication protocols involved.
✓ Familiarity with electronic components like microcontrollers and CAN transceivers might be
beneficial.

Course Information
Description
This course is designed for participants with basic C++ knowledge who want to learn the
fundamentals of CANBUS programming using C++. Participants will gain the essential skills to
develop C++ programs for interacting with CANBUS networks and lay the foundation for further
exploration in embedded system communication.

Learning Objectives
• Participants Understand the CANBUS communication protocol and its applications.
• Set up a development environment for C++ CANBUS programming.
• Utilize C++ libraries for interacting with CANBUS interfaces.
• Write basic C++ programs to transmit and receive messages on a CANBUS network.
• Gain experience with troubleshooting common CANBUS communication issues.

BINUS CENTER Page 1 of 4


Course Materials
Introduction & CANBUS Fundamentals
Session 1: Introduction to CANBUS
• CANBUS overview - core concepts, benefits, and limitations.
• CANBUS network topology, message structure (identifier, data).
• Real-world applications of CANBUS in embedded systems.
Session 2: C++ Development Environment Setup
• Choosing a suitable C++ compiler and IDE (e.g., GCC, CLion).
• Including necessary CANBUS libraries (e.g., SocketCAN,ixxat).
• Setting up a development project for CANBUS communication.
Session 3: Introduction to CANBUS Libraries
• Exploring popular C++ CANBUS libraries and their functionalities.
• Understanding basic functions calls for initialization, message transmission, and reception.
• Hands-on practice: Setting up a development environment and exploring CANBUS library
functions.

Programming for CANBUS


Session 4: CANBUS Message Construction
• Constructing CAN messages in C++ using library functions.
• Specifying CAN identifiers, data length, and data payload.
• Hands-on practice: Building C++ programs to create CAN messages with different data types.
Session 5: Transmitting CAN Messages
• Implementing C++ code for transmitting CAN messages on the network.
• Handling potential errors during message transmission.
• Hands-on practice: Writing C++ programs to transmit CAN messages to a simulated or physical
CANBUS network.
Session 6: Receiving CAN Messages
• Understanding techniques for receiving CAN messages in C++.
• Processing received message data within C++ programs.
• Hands-on practice: Building C++ programs to receive CAN messages and handle the received
data.

Advanced Topics & Troubleshooting


Session 7: CANBUS Monitoring and Error Handling
• Utilizing C++ code to monitor CANBUS activity (bus status, error flags).
• Implementing error handling mechanisms for communication issues.
• Hands-on practice: Writing C++ programs to monitor CANBUS status and handle errors.
BINUS CENTER Page 2 of 4
Session 8: CANBUS Configuration and Filtering
• Introduction to CANBUS configuration tools and message filtering techniques.
• Configuring CAN nodes and filters using C++ libraries (if applicable).
Session 9: Debugging and Troubleshooting
• Common CANBUS communication problems and debugging strategies.
• Using debugging tools and logs to identify and fix CANBUS errors.
• Hands-on practice: Simulating and troubleshooting common CANBUS communication issues.

Final Project and Showcase


Session 10: Project Work and Wrap-Up
• Students work on a hands-on project to apply their knowledge of CAN bus communication in
C++.
• Review of key concepts and discussion of real-world applications of CAN bus technology

Course Schedule
Date Subject
Day-1 Session 1
[ Time to be Confirmed ] Introduction to CANBUS
Day-2 Session 2
[ Time to be Confirmed ] C++ Development Environment Setup
Day-3 Session 3
[ Time to be Confirmed ] Introduction to CANBUS Libraries
Day-4 Session 4
[ Time to be Confirmed ] CANBUS Message Construction
Day-5 Session 5
[ Time to be Confirmed ] Transmitting CAN Messages
Day-6 Session 6
[ Time to be Confirmed ] Receiving CAN Messages
Day-7 Session 7
[ Time to be Confirmed ] CANBUS Monitoring and Error Handling
Day-8 Session 8
[ Time to be Confirmed ] CANBUS Configuration and Filtering
Day-9 Session 9
[ Time to be Confirmed ] Debugging and Troubleshooting

Day-10 Session 10

BINUS CENTER Page 3 of 4


[ Time to be Confirmed ] Project Work and Wrap-Up

Additional Information and Resources


Grading & Exam Policy
Attendance & Participation : 40%
Individual Exercise and Report : 30%
Final Presentation for Case Study : 30%

Hardware Requirements
• Notebook / Laptop Core i5
• RAM Min. 8 GB
• Operating System: Windows 10 64-bit or later
• CANBUS adapter or development board will allow you to test your code on real hardware.
• USB-to-CAN adapters: These adapters allow you to connect your computer to a CANBUS
network.
• Development boards with CAN controllers: Some development boards like certain Arduino
models or STM32 Nucleo boards have built-in CAN controllers for direct CANBUS
communication.

Software Requirements
• Visual Studio Community (Windows): A powerful IDE from Microsoft with debugging tools and
CANBUS plugins available.
• C++ Compiler
• GNU Compiler Collection (GCC): Available for various operating systems, GCC is a widely
used and powerful compiler.
• Clang: Another open-source compiler known for its speed and accuracy.

Resources and References:


• Voss, Wilfrie. Controller Area Network Prototyping with Arduino
• Pfeiffer, Olaf., Keydel, Christian., et al. Implementing CAN FD with Microcontrollers: A Cookbook
Approach
• Matheus, Kirsten., Königseder, Thomas., et al. Automotive Ethernet: The Definitive Guide
• Navet, Nicolas., & Simonot-Lion, Françoise. Automotive Embedded Systems Handbook.

BINUS CENTER Page 4 of 4

You might also like