Plotato is a Qt Quick application for visualizing CAN (Controller Area Network) logs, with planned support for live CAN data streams. The project is designed to have the bare minimum number of dependencies and aims to support as many types of devices and platforms as possible. It leverages Qt6 for its modern UI and ggml for efficient linear algebra operations on data streams.
- Visualize CAN log data with interactive charts (QtCharts)
- Parse and interpret DBC (Database CAN) files for CAN message definitions
- Modular QML-based UI for extensibility
- Uses ggml for high-performance matrix operations
- Cross-platform: macOS, Windows, and Linux
.
├── CMakeLists.txt
├── cmake/ # CMake modules for fetching dependencies (GGML, SQLite, Boost Spirit)
├── include/ # Header files for libraries
│ ├── can_land/ # CAN and DBC parsing headers
│ └── motec_parser/ # MoTeC data format parser headers (work in progress)
├── src/ # Application source code (C++ and QML)
│ ├── app/ # Main Qt Quick application and QML UI
│ ├── can_land/ # CAN and DBC parsing implementation
│ └── motec_parser/ # MoTeC data format parser (currently non-functional)
├── test/ # Unit tests and test data
│ ├── can_land/ # CAN parsing tests
│ ├── GGMLTest.cpp # GGML library tests
│ └── test.ld # Sample data file
├── build/ # CMake build directory (generated)
└── README.md
- Qt 6.9.0 or newer (Charts, Core, Gui, Qml, Quick modules)
- CMake 3.26+
- C++20 compiler (GCC, Clang, or MSVC)
The project manages three main dependencies with different installation approaches:
- ggml - High-performance linear algebra library (automatically built by the project)
- SQLite - Lightweight database engine (can use local installation or be automatically built)
- Boost Spirit - Parser framework for DBC file parsing (can use local installation or be automatically built)
- Open the project folder in VSCode.
- Install the CMake Tools and C/C++ extensions.
- Ensure your Qt installation is discoverable by CMake (see below).
- Use the VSCode build tasks (
CMake: ConfigureandCMake: Build) or the status bar buttons.
- Create a build directory:
mkdir build cd build - Configure the project with CMake, specifying the Qt path if needed:
Or, if you need to specify the Qt path:
cmake ..
cmake -DQT_PREFIX_PATH="/path/to/Qt/lib/cmake" .. - Build the project:
cmake --build .
- Global Environment Variable:
export QT_PREFIX_PATH="$HOME/Qt/<version>/macos"
- CMake Command Line Argument:
cmake -DQT_PREFIX_PATH="/Users/<user>/Qt/<version>/macos" ..
- Global Environment Variable:
export QT_PREFIX_PATH="$HOME/Qt/<version>/gcc_64"
- CMake Command Line Argument:
cmake -DQT_PREFIX_PATH="/home/<user>/Qt/<version>/gcc_64" ..
- Global Environment Variable (PowerShell):
$env:QT_PREFIX_PATH="C:/Qt/<version>/msvc2019_64"
- Global Environment Variable (cmd.exe):
set QT_PREFIX_PATH=C:\Qt\6.9.0\msvc2019_64
- CMake Command Line Argument:
cmake -DQT_PREFIX_PATH="C:/Qt/<version>/msvc2019_64" ..
After building, you can run the application as follows:
cd build
open src/app/Plotato.appAlternatively, you can run the binary directly from within the .app bundle:
./src/app/Plotato.app/Contents/MacOS/PlotatoIf you see missing Qt libraries, ensure your PATH and DYLD_LIBRARY_PATH include your Qt installation's bin and lib directories. If you encounter issues, you may need to use the macdeployqt tool to bundle the required Qt libraries into the .app bundle:
/Users/<user>/Qt/<version>/macos/bin/macdeployqt src/app/Plotato.appcd build
./src/app/PlotatoFrom the build directory, run:
.\src\app\Plotato.exeThe project includes unit tests for working components:
cd build
ctestOr run individual test executables:
./test/ggml_test- Tests GGML integration./test/can_land/- Tests CAN and DBC parsing
Note: MoTeC parsing tests are currently disabled due to implementation issues.
- The project uses ggml for linear algebra operations, which is automatically fetched and built by the project
- Two additional dependencies (SQLite, Boost Spirit) are managed via CMake and can either use system installations or be automatically fetched and built as shared libraries
- The QML UI is located in
src/app/qml/ - DBC file parsing enables interpretation of CAN bus message definitions