🛠️ FluidNC gCode Sender

Cross-platform GUI for FluidNC: SVG → G-code, live DRO, jogging, macros, auto-restore after power loss

Latest Version: v0.1.0
C++ wxWidgets Implementation
✅ Core Infrastructure Complete 🚧 GUI Framework In Progress

🚀 Project Overview

This is the C++ wxWidgets conversion of the original Python-based FluidNC_gCodeSender. The conversion is currently in progress, focusing on improved performance, lower memory usage, and enhanced thread safety.

🎯 Core Features

  • Real-time DRO (Machine/Work position)
  • SVG to G-code conversion
  • Interactive jogging and homing
  • Custom macro system
  • Auto-restore after power loss

🔧 Technical Highlights

  • Modern C++17 with threading
  • Cross-platform (Windows/Linux)
  • JSON-compatible configuration
  • Thread-safe design
  • AUI dockable interface

🌐 Connectivity

  • Asynchronous telnet communication
  • Auto-reconnection with retry
  • Command queuing system
  • Real-time status monitoring
  • Cross-platform sockets

📈 Development Progress

Phase 1: Core Infrastructure

  • CMake build system
  • StateManager (JSON persistence)
  • FluidNCClient (network communication)
  • Cross-platform socket abstraction
  • Threading and synchronization

🚧 Phase 2: Basic GUI

  • MainFrame implementation
  • DROPanel implementation
  • JogPanel implementation
  • TelnetSetupPanel implementation
  • SettingsPanel implementation

Phase 3: Advanced Features

  • SVG loading and display
  • G-code generation from SVG
  • Macro engine
  • G-code editor with drag-drop
  • Toolpath preview

🔨 Building the Project

Prerequisites

Windows (MSVC)

# Install dependencies via vcpkg (recommended) vcpkg install wxwidgets nlohmann-json # Configure and build cmake -B build-win -S . -DCMAKE_TOOLCHAIN_FILE=[path-to-vcpkg]/scripts/buildsystems/vcpkg.cmake cmake --build build-win --config Release

Linux (Ubuntu/Debian)

# Install dependencies sudo apt-get install libwxgtk3.0-gtk3-dev nlohmann-json3-dev cmake build-essential # Build cmake -B build-linux -S . cmake --build build-linux

⚙️ Configuration

The application maintains the same configuration format as the Python version for seamless migration:

Example Configuration

{ "telnet": { "host": "192.168.1.100", "port": 23, "connect_retries": 3, "retry_interval_s": 2 }, "window_geometry": [100, 100, 1200, 800], "aui_layout": { "perspective": "layout0|name=setup;caption=;state=..." }, "gcode_history": [ "G0 X10 Y10", "$H", "G1 X0 Y0 F1000" ] }

🔄 Migration from Python Version

  1. Backup your configuration: cp -r config/ config_backup/
  2. The C++ version automatically reads existing settings:
    • All telnet settings
    • Window positions and layout
    • G-code command history
    • Macro definitions (when implemented)
  3. Benefits of the C++ version:
    • Better performance due to native compilation
    • Lower memory usage
    • Improved thread safety
    • Enhanced error handling

🤝 Contributing

The conversion follows the original Python code structure while modernizing with C++ best practices. Key areas needing attention:

📄 License

BSD 3-Clause License (same as original Python version)

Copyright © 2025 FluidNC gCode Sender Project. All rights reserved.