/Universal-G-Code-Sender

A Java based GRBL compatible cross-platform G-Code sender.

Primary LanguageJavaGNU General Public License v3.0GPL-3.0

Universal G-Code Sender

Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL and TinyG/g2core. Use this program to run a GRBL or TinyG/g2core controlled CNC machine.

Online documentation and releases: http://winder.github.io/ugs_website/
Discussion forum: https://groups.google.com/forum/#!forum/universal-gcode-sender

Technical details:

Downloads

These are the nightly builds of the most recent code with the latest features and bug fixes.
For stable releases visit the downloads page.

Last commit Build Status Codacy Badge Codebeat badge

UGS Platform
The nightly build of the next generation, feature packed version based on the Netbeans Platform.

Unpack and start the program bin/ugsplatform

Windows Windows
Mac OSX Mac OSX
Linux x64 Linux
Linux ARM RaspberryPI
Zip All platforms (requires Java)

UGS Classic
The nightly build of the classic version with a clean and lightweight user interface.

Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script.

Zip All platforms (requires Java)

Screenshots

UGS Platform

UGS Platform main window

UGS Platform

Customizable panel layout

Customizable panel layout

Menu actions with customizable keybindings

Actions

Menu with plugins

Plugins

One of many plugins

Dowel Maker

Basic gcode editor

Basic gcode editor

UGS Classic

UGS Classic main window

Classic main window

UGS Classic with visualizer

Classic visualizer

Development

For development the Maven build tool is used.

Start the application

UGS Classic:

mvn install
mvn exec:java -Dexec.mainClass="com.willwinder.universalgcodesender.MainWindow" -pl ugs-core

UGS Platform:

mvn install
mvn nbm:run-platform -pl ugs-platform/application

Execute all tests

mvn test

Building the self-executing JAR

mvn install
mvn package -pl ugs-core

Build a UniversalGcodeSender.zip release file

mvn package assembly:assembly

Develop via Intellij

If you are more used to Intellij, you can also build, run and debug it there:

  • Run mvn nbm:run-platform -pl ugs-platform/application once via terminal to build everything
  • Import the Source, File -> New -> Project from existing Sources
  • Setup a new "Run Configuration", Java Application, with following settings:
    • Main Class: org.netbeans.Main
    • VM Options: -Dnetbeans.user=$ProjectFileDir$/ugs-platform/application/target/userdir -Dnetbeans.home=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform -Dnetbeans.logger.console=true -Dnetbeans.indexing.noFileRefresh=true -Dnetbeans.dirs="$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ugsplatform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ide:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/extra:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/java"
    • Program arguments: --branding ugsplatform
    • Working dir: $ProjectFileDir$
    • Use classpath of module: ugs-platform-app
  • There is a runConfiguration in the repository, which should be available after importing the project

Changelog

1.0.9 -> 2.0

  • Constant memory! Optimized every part of UGS to run in a fixed amount of memory, no more slowness because a file is too large.
  • 'Cancel' now issue a feed hold and soft reset to stop the machine faster.
  • Macro substitutions. Use {machine_x/y/z} {work_x/y/z} to substitute the current machine/work coordinates, {prompt|name} can be used to ask for values in a popup dialog.
  • UGS now queries GRBL for its current state and settings in order to configure itself in a more intelligent manner. (Thanks Phil!)
  • Improved gcode parser. Heavily refactored and validated with a new suite of unit tests, the gcode parser is now much more powerful than before and can be augmented customizable command processors.
  • Controllers can now be added and configured with a JSON file, see resources/firmware_config
  • Added restore default buttons on settings pages.
  • Plane selection support: G17, G18, G19
  • Setup wizard for CNC controllers
  • Improved support for TinyG / g2core
  • Improved web pendant
  • Added command line support

1.0.8 -> 1.0.9

  • Many performance improvements.
  • New serial library: JSSC
  • Updated 3D library.
  • Maven build script (Thanks nitram509!)
  • TinyG support enabled.
  • XLCD support.
  • Bug fixes: INCH/MM jog units, visualizer fixes (crashes and OSX support), "Null stream" error, localization crashes,
  • Translations: French, Greek, Dutch, Italian

1.0.7 -> 1.0.8

  • PendantUI server - connect to UGS with your smartphone or tablet. (jvabob)
  • Translations: German, Spanish, Italian, Afrikaans
  • Many bugfixes and stability improvements.

1.0.6 -> 1.0.7

  • Many improvements to code architecture to allow future support for multiple firmwares (TinyG, Marlin, Smoothie, etc).
  • New menu bar! Now new features can be added and existing features are more configurable.
  • Additional on-the-fly gcode command preprocessing:
    • truncate and round long decimals to configurable length.
    • enforce max command length.
    • remove whitespaces.
    • expand small arcs to G1 commands.
  • New option to save preprocessed gcode file to a file.
  • Visualizer navigation controls - pan and zoom with the mouse wheel. (michmerr)
  • Visualizer Support for radius arcs (phlatboyz sketchup plugin gcode now displays correctly)
  • New single-step mode.
  • New colored status indicator.
  • Many bugfixes, thanks to UGS contributors

1.0.5 -> 1.0.6

  • 3D gcode visualizer!
    • color coded line segments
    • real time tool position
    • real time gcode buffer position
  • Due to popular demand, RaspberryPi support.
  • Complete all-in-one release, 32 and 64 bit linux/windows/mac + RaspberryPi
  • Settings saved between runs (thanks lazyzero)
  • Advanced GRBL control, new buttons for GRBL 0.8c features (gcode check mode, homing, etc)
  • Major backend refactoring to make code more stable and testable.
  • Unit tests added, over 1300 lines of unit test code.

1.0.4 -> 1.0.5

  • Job duration estimate now displayed when running a file.
  • Real-time machine position display for GRBL v8.0c.
  • Display for most recent GcodeComment.
  • Bug fixes - no more dropped commands!
  • Overhauled the GUI to display more information.

1.0.3 -> 1.0.4

  • The step size spinner now goes to less than 1.
  • New buttons on the manual control page for common functions.
  • Manual X/Y coordinates can now be modified with arrow keys.
  • New start scripts added to release zip files.
  • Changed speed override to a percentage rather than absolute.
  • Bug fixes.

1.0.2 -> 1.0.3

  • Manual jogging mode, control machine with buttons in the UI.
  • Automatically skip blank lines and comments when sending a file.
  • Bug fixes.

1.0.1 -> 1.0.2

  • Grbl version checking.
  • Real-time pause/resume commands used for Grbl v0.8.
  • Comment filtering - parses out comments before sending commands.
  • Bug fixes.

1.0 -> 1.0.1

  • New distribution jar - Application no longer requires RXTX to be installed!
  • Added table view for file streaming.
  • Added Pause/Resume button.
  • Usability improvements.
  • Many bug fixes.
  • Renamed package to com.willwinder.universalgcodesender.