CAN API V3 is a wrapper specification by UV Software to have a uniform CAN Interface API for various CAN interfaces from different vendors running under multiple operating systems.
The goal of the CAN API V3 project is to have a multi-vendor, cross-platform CAN Interface API (Application Programming Interface). Each CAN adapter vendor provides its own CAN software SDK (Software Development Kit) for the development of CAN applications based on the provided SDK. Unfortunately, the APIs of the different manufacturers are not compatible with each other. The CAN Interface API by UV Software (CAN API V3) solves the problems arising from this incompatibility.
This documentation is a generic description of the CAN API V3 Software Development Kit. It describes all functions, properties and data types of the CAN API V3 Application Programming Interface without referencing the specifics of the individual CAN API V3 implementations.
On the other hand, this documentation serves as a requirements specification for the implementation of a CAN API V3 wrapper library based upon a vendor-specific SDK or based upon an own CAN driver implementation. You just need to add the word “shall” to each sentence in your mind.
The CAN API V3 application programming interface is defined for the C programming language. The SDKs also provide application programming interfaces for C++ and Swift (macOS® only).
CAN API V3 provides the following main functions respectively methods:
can_test() respectively ProbeChannel() - probe if a CAN channel is available
can_init() respectively InitializeChannel() - initialize a CAN channel
can_exit() respectively TeardownChannel() - teardown a CAN channel
can_kill() respectively SignalChannel() - signal waiting event objects of a CAN channel
can_start() respectively StartController() - start the CAN controller of a CAN channel
can_reset() respectively ResetController() - stop the CAN controller of a CAN channel
can_write() respectively WriteMessage() - send a CAN message on a CAN channel
can_read() respectively ReadMessage() - read one CAN message from the receive queue of a CAN channel
can_status() respectively GetStatus() - get the status register of a CAN channel
can_bitrate() respectively GetBitrate() and GetBusSpeed() - get the CAN bit-rate settings of a CAN channel
can_property() respectively GetProperty() and SetProperty() - get or modify a property value of a CAN channel or of the CAN API library
Several CAN API V3 software development kits exist for Windows®, macOS® and Linux®. They can be downloaded from / cloned at my GitHub repositories.
Please note the copyright and license agreements in the appropriated repository.
CAN API V3 SDK for Peak-System PCAN® Interfaces
CAN API V3 SDK for Kvaser CAN Interfaces
CAN API V3 SDK for CAN-over-Serial-Line Interfaces (SLCAN Protocol)
CAN API V3 SDK for PCAN-USB Interfaces from PEAK-System
macOS® Driver and CAN API V3 SDK for USB CAN Interfaces from Kvaser
macOS® Driver and CAN API V3 SDK for TouCAN USB Interfaces from Rusoku
CAN API V3 SDK for CAN-over-Serial-Line Interfaces (SLCAN Protocol)
CAN API V3 SDK for PCAN-USB Interfaces from PEAK-System
CAN API V3 SDK for CAN-over-Serial-Line Interfaces (SLCAN Protocol)
These projects are developed and maintained in my spare time. If you like them (all of them, or just one) I would be very happy if you donate to my work.