Skip to content

madcray34/SerialLogger

Repository files navigation

SerialLogger

License Build Status C++ Platform

Overview

SerialLogger is a high-performance, cross-platform serial communication logging tool written in modern C++ (C++20). It is designed to auto detect when a serial port is connected and efficiently log (and analyze in future release) serial data streams, making it an ideal solution for embedded systems debugging, hardware communication analysis, and industrial automation.

Features

  • Cross-Platform Support: Runs on Windows. Linux, and macOS are work in progres...
  • C++20: Leveraging the latest C++ features for better performance and maintainability.
  • Modular Architecture: Easily extendable and customizable.
  • ImGui-based GUI: User-friendly graphical interface for data visualization.
  • Boost Asio for Networking: Provides networking capabilities for remote logging.
  • Lightweight & Fast: Optimized for high-performance logging.

Folder Structure

SerialLogger/
│-- CMakeLists.txt          # Project build configuration
│-- prepare.bat             # Preparation script
│-- vcpkg.json              # Dependencies configuration
│
├── app/                    # Application source code
├── cmake/                  # CMake utilities and scripts
├── external/               # External dependencies
├── modules/                # Core modules
├── tools/                  # Utility scripts and tools

Build Instructions

Prerequisites

Ensure you have the following installed:

  • CMake (>= 3.30)
  • C++20 Compiler (GCC, Clang, or MSVC)

The following will be automatically added to the ./external folder:

  • Vcpkg (for dependency management)
  • Boost, fmt, GLFW, ImGui, ImPlot, OpenGL (handled via vcpkg)

Build Steps

Linux/macOS

git clone https://github.com/madcray34/SerialLogger.git
cd SerialLogger
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../vcpkg/scripts/buildsystems/vcpkg.cmake
make -j$(nproc)

Windows

git clone https://github.com/madcray34/SerialLogger.git
cd SerialLogger
mkdir build; cd build
cmake ..
cmake --build . --config Release

Usage

After building, you can run SerialLogger, depending on you're local CMake configuration. For instance building it with MSVC:

cd build
./app/Release/SerialLogger.exe

Configuration Options

SerialLogger provides multiple configuration options in CMakeLists.txt:

  • ENABLE_WARNINGS (ON/OFF) - Enables compiler warnings.
  • ENABLE_WARNINGS_AS_ERRORS (ON/OFF) - Treats warnings as errors.
  • ENABLE_CLANG_FORMAT (ON/OFF) - Enables Clang format enforcement.
  • ENABLE_CLANG_TIDY (ON/OFF) - Enables Clang static analysis.
  • ENABLE_LTO (ON/OFF) - Enables Link Time Optimization for better performance.

Dependencies

SerialLogger uses several external libraries:

  • Boost (circular_buffer, asio, system)
  • fmt (formatting library)
  • GLFW (window management)
  • ImGui (GUI framework)
  • ImPlot (plotting library for ImGui)
  • OpenGL (rendering backend)

All dependencies are managed via vcpkg.

Contribution

Contributions are welcome! Please follow these steps:

  1. Fork the repository.
  2. Create a new branch (feature-branch).
  3. Commit your changes.
  4. Push to your fork.
  5. Open a pull request.

License

This project is licensed under the MIT License.

Contact

For issues, feature requests, or general inquiries, please open an issue or reach out via email.


Made with ❤️ by madcray34

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published