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.
- 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.
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
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)
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)
git clone https://github.com/madcray34/SerialLogger.git
cd SerialLogger
mkdir build; cd build
cmake ..
cmake --build . --config Release
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
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.
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.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a new branch (
feature-branch
). - Commit your changes.
- Push to your fork.
- Open a pull request.
This project is licensed under the MIT License.
For issues, feature requests, or general inquiries, please open an issue or reach out via email.
Made with ❤️ by madcray34