Skip to content

openDAQ/openDAQ

Repository files navigation

openDAQ
SDK that bridges the gap between data acquisition devices, in an era where incompatibility is the norm


openDAQ is a software development kit that allows for easy integration of data acquisition devices into its ecosystem. It provides a simple generic API that allows users to connect to Data Acquisition (DAQ) devices that are compliant with openDAQ and any of its supported open standards. With the SDK, users can configure properties of devices and read their measurement data. It also contains a framework for developing custom signal processing blocks that process and analyse signal data. In a world where DAQ devices do not readily communicate, openDAQ provides a common language for all to speak while also embracing existing standards such as MQTT and XCP via Ethernet.

Features

  • Simple connection to openDAQ-enabled devices, allowing for property visualisation/configuration and data streaming.
  • Simple integration of existing data acquisition devices into the openDAQ ecosystem.
  • SDK that runs the same code on both the device (server) and application (client).
  • Signal processing framework that allows for implementation of custom data processing blocks that run on any SDK instance (device or application).
  • OPC UA for structure/property transfer, WebSocket streaming for data.
  • API built of C++ pure abstract classes that can be passed across shared library boundaries regardless of compiler and platform used.
  • C++ pointer wrappers that allow for C++ features to be used in conjunction with the openDAQ pure abstract classes.
  • Wrappers for Python and Delphi (C# in development).

Getting started

Documentation

The Doxygen documentation can be built by enabling the OPENDAQ_BUILD_DOCUMENTATION cmake flag. The user guide documentation can be built with Antora by following the guide found in docs/Antora/README.md.

Building openDAQ

Supported compilers and platforms:

OS Platform GCC 7.3.1+ Clang 5+ VC++ (v14.1+)
Windows
(Visual Studio)
x86, x64 /
arm64 ⚠️🛠️ ⚠️🛠️
Windows
(MinGW)
x86, x64 ☑️ ☑️ /
Linux x86, x64
armhfv7, aarch64 ☑️ ☑️
MacOS
(>= 10.15)
x64 ☑️
arm64 ☑️ ☑️
iOS arm64 🛠️ 🛠️
Android aarch64 🛠️ 🛠️
Actively supported (checked with CI)
☑️ Actively supported (no CI)
⚠️ Not actively supported
🛠️ Requires some manual changes or special configuration

Required tools before building

Building on Windows

1. Install all required tools / packages.

See Required tools before building above.

2. Clone openDAQ repo.

git clone git@github.com:openDAQ/openDAQ.git
cd openDAQ

3. Generate CMake project for specific compiler / preset.

In the repository root folder execute the following command to list available presets then select the one that fits you and generate CMake project:

cmake --list-presets=all
cmake --preset "x64/msvc-22/full"

ℹ️ If for any reason there is no preset for your compiler (version) you can list the "CMake generators" and specify one to override the closest preset (e.g. to use Visual Studio 2019):

cmake -G
cmake --preset "x64/msvc-17/full" -G "Visual Studio 16 2019"

4. Build the project

Open and build build/x64/msvc-22/full/openDAQ.sln using Visual Studio (if one msvc preset had been used above).

Or use command line:

# build from repository root
cmake --build build/x64/msvc-22/full
# or move to build directory
cd build/x64/msvc-22/full
cmake --build .

For other compilers than msvc one can add parameter -j 4 to the build command to specify the number of parallel builds (see cmake.org: Build a Project with CMake).

Building on Linux

1. Install all required tools / packages.

For example in Ubuntu

sudo apt-get update
sudo apt-get install -y git build-essential lld cmake ninja-build mono-complete python3

2. Clone openDAQ repo.

git clone git@github.com:openDAQ/openDAQ.git
cd openDAQ

3. Generate CMake project for specific compiler / preset.

In the repository root folder execute the following command to list available presets then select the one that fits you and generate CMake project:

cmake --list-presets=all
cmake --preset "x64/gcc/full/debug"

4. Build the project.

# build from repository root
cmake --build build/x64/gcc/full/debug
# or move to build directory
cd build/x64/gcc/full/debug
cmake --build .

Additional building info

More information about advanced building options can be found in BUILD.md document.