Giter VIP home page Giter VIP logo

winder / universal-g-code-sender Goto Github PK

View Code? Open in Web Editor NEW
1.9K 171.0 762.0 68.17 MB

A cross-platform G-Code sender for GRBL, Smoothieware, TinyG and G2core.

Home Page: http://winder.github.io/ugs_website/

License: GNU General Public License v3.0

Java 75.95% Shell 0.06% HTML 0.09% nesC 19.60% Batchfile 0.01% Python 0.08% JavaScript 0.01% TypeScript 0.85% G-code 3.30% SCSS 0.07%
grbl java gcode-parser grbl-control gcode cnc tinyg smoothieware g2core gcode-sender

universal-g-code-sender's Introduction

Universal G-Code Sender

Last commit Build Status Codebeat badge Crowdin Downloads Releases

Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL, TinyG, g2core and Smoothieware.

Webpage: https://universalgcodesender.com/
Discussion forum: https://github.com/winder/Universal-G-Code-Sender/discussions
Discord chat: https://discord.gg/h4HRmyYX
Translations: https://poeditor.com/join/project/2J2hB5I41Z

Technical details:

Downloads

Below you will find the latest release of UGS.
For older releases please visit the releases page.

UGS Platform
The next generation, feature packed variant based on the Netbeans Platform.
Unpack and start the program bin/ugsplatform

Latest release (v2.1.8) Nightly build
Windows 64-bit Windows 64-bit Windows 64-bit Windows 64-bit
Mac OSX Mac OSX Mac OSX Mac OSX
Mac OSX Mac OSX ARM64 Mac OSX ARM64 Mac OSX ARM64
Linux x64 Linux 64-bit Linux x64 Linux 64-bit
Linux ARM Linux ARM Linux ARM Linux ARM
Linux ARM Linux ARM64 Linux ARM Linux ARM64
Zip All platforms Zip All platforms

UGS Classic
A clean and lightweight variant of UGS (requires Java 17).
Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script.

Latest release (v2.1.8) Nightly build
Zip All platforms Zip All platforms

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

Vector graphics designer for generating GCode toolpaths

Designer

UGS Classic

UGS Classic main window

Classic main window

UGS Classic with visualizer

Classic visualizer

Development

Show details on how to compile the software

For development we use Maven and Java 17 for compiling.

Compiling and starting 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-classic

Build a UniversalGcodeSender.zip release file

mvn package -pl ugs-classic 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:
-Dpolyglot.engine.WarnInterpreterOnly=false
-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.moduleitem.dontverifyclassloader=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
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED
--add-opens=java.prefs/java.util.prefs=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.text=ALL-UNNAMED
--add-opens=java.desktop/javax.swing=ALL-UNNAMED
--add-opens=java.desktop/java.awt=ALL-UNNAMED
--add-opens=java.desktop/java.awt.event=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED
--add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED
--add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED
--add-opens=java.desktop/sun.awt.im=ALL-UNNAMED
--add-exports=java.desktop/sun.awt=ALL-UNNAMED
--add-exports=java.desktop/java.awt.peer=ALL-UNNAMED
--add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED
--add-exports=java.desktop/sun.swing=ALL-UNNAMED
--add-exports=java.desktop/sun.awt.im=ALL-UNNAMED
--add-exports=java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED
  • 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

universal-g-code-sender's People

Contributors

aidaskni avatar andrewmurraydavid avatar andycxl avatar bertieconfundo avatar binaryconstruct avatar breiler avatar carneeki avatar chopinli-cp avatar danielweigl avatar dastultz avatar dependabot[bot] avatar esasiela avatar fl0yd avatar jibeji avatar juliomcdias avatar justinclift avatar kevinfrei avatar lamikr avatar lazyzero avatar michaelnu avatar michmerr avatar nickmayer avatar nitram509 avatar philreindl avatar radzimir avatar rugbymauri avatar smiley561 avatar stylesuxx avatar warmans avatar winder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

universal-g-code-sender's Issues

Close button doesn't work

There seems to be a problem on version 1.0.2. When you click the close button, the program freezes and the java process must be killed.

use G91 for jogging

I did test this here:
alpharesearch@bae23e8

It's not keeping track of the coordinates and it switches back to G90, but I also added a button that sends the question mark so I see the position...
This is more a hack to proof that this works, I guess to do it right it would be good to query $# to see if G90 or G91 is selected and if G91 was selected not to switch back to G90. And to add a timer and query via ? every so often until it's status changes from run to idle again and display the real time changes.

Btw, I also did set the pageup and pagedown hotkeys for Z up/down and I did add all the important GRBL commands to buttons.

Maybe you like some of my ideas and want to take those to the main branch.

Machine vs Work Position

Hey guys,

I just downloaded/compliled the latest UGS and noticed that "Work Position" and "machine Position" labels are switched. IMO, work position is relative to the current work coordinates (G54, G55, etc) while Machine Position would be relative to absolute 0,0,0 of the machine.

Thus, a homing cycle ($h) should home the machine to "Machine Position" 0,0,0.

Just thought I would toss in my 2 cents, I could have sworn they were different before...

Jogging uses current location

Often, I need to go from "home" on my machine, to somewhere out in the middle of my workspace. Using the manual jog, I could (and have!) set the jog distance to be fairly large...and then unfortunately forgot I did this and move Z down....Crash! So I find myself manually typing in the coordinates that I want to get to and completely ignoring the jog commands entirely.

I saw on the GRBL page that someone was working on adding the ability to "live" poll the location using the "?" command. This got me thinking: what if, each time you started Manual mode there would be a button, or an automatic feature that would grab the current "?" location so that you could then jog from that point in space. Not sure how hard it would be to grab those numbers, but it sure would be handy!!

Add "Macro" tab for customizable workflows

Great package, I use it frequently. I tend to run a bunch of small jobs / files, which need to be run with some manual material handling / repositioning in between.

A great feature (from my parochial perspective) would be some sort of "macro" capability, where I can assign a chosen gcode file to a button (hopefully there would be several). Clicking the button would load and send that file to grbl.

Overall, the application is great!

Add control layer between Serial and GUI

I'm working on a major refactor of the Serial and GUI layers, pulling all of the control logic into a new control layer. The main impetus for this is that there is so much being done in the MainForm GUI object and adding new features is getting cumbersome. In addition to this the SerialCommunicator class is doing too much and sharing too much data with other objects like multiple parts of the GUI.

I can start it in netbeans but not from the command line...

In the past I was able to start it from the command line without issues, but with the last version I get this error when I use the suggested command from netbeans to start the program:

To run this application from the command line without Ant, try:
java -jar "/home/markus/Universal-G-Code-Sender/dist/Universal G-Code Sender.jar"

Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group
Caused by: java.lang.ClassNotFoundException: org.jdesktop.layout.GroupLayout$Group
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: com.willwinder.universalgcodesender.MainWindow. Program will exit.

I did try to take all the One Jar things out but this didn't help - I want to start the program on my Raspberry Pi - I was able to start to old version but I need to be able to change the baud rate... I do have the same issue on my normal PC.

Any idea what has changed?

Useful buttons for manual mode

It would be nice to have a few buttons to do common behaviors in manual mode:

Reset coordinates - "G92 X0 Y0 Z0"
Go home - "G0 X0 Y0 Z0"
Perform homing cycle with limit switches - ???

Lost Steps

Ive been playing with UGS v1.05 and have been having some strange issues. Any movement on any axis seems to have "Sputtering" and results in lost steps. Essentially, the motor is rotating approximately 1 revolution, quick pause, then continues. This "sputtering" is pretty consistent, maybe 1 second apart from each other.

I do not have this problem with the old style gcode sender, just the new one. My only guess is maybe the new version is polling "?" and other real time commands too often for the arduino to keep up?

Downloads removed.

Github is apparently phasing out the Downloads area and has locked out any new files. People can still get to the previously listed downloads by going directly to the site address /downloads.

Not sure now how to get the new G-code sender compiled versions. Is it possible to upload these into a folder of your repo?

Use mouse scroll wheel as Jog interface?

It would be really useful if there was a way to control jogging in a more interactive fashion.

Real CNC machines often have a pendant with a jog wheel and a switch to select the axis being jogged and another to set the distance traveled per "click" on the jog wheel. It makes it really easy to rapidly traverse and then slowly move into position.

It struck me just now that perhaps the scroll wheel on a mouse could be used as a jog wheel.

Does this sound useful/feasible?

No startup files, no jar file

Just downloaded the zip file. No startup (Universalstartup.sh iirc) file, nor is there a Universal-G-Code-Sender.jar file.

more features

This is beautiful! I admire your work. Your code is so much cleaner than mine (I attempted something similar: https://github.com/jgeisler0303/grblUI). Unfortunately I am very busy at the moment and hadn't had a chance at taking Universal-G-Code-Sender on a test ride, but from the looks it is by far the best g-code feeder for grbl I've seen so far.

When I find the time I would like to dump my grblUI and start to contribute to Universal-G-Code-Sender. Meanwhile I would like to suggest some more features:

  • Poll the current Position (and possibly line number) and display it
  • Add JSpinner for x, y, and z manual jogging (absolute and incremental)
  • Add settings tab
  • Send files to a locally running version of grbl (being prepared here https://github.com/jgeisler0303/grbl/tree/simulator) to simulate estimated runtime and path
  • Display simulated tool path in Java3D

These are all conceptually implemented in my grblUI but as I said: the code is very crappy and untested. I guess you have far more users/testers and the better code base. What do you say?

BTW: what IDE do you use?

not detecting bluetooth virtual serial ports (WINDOWS)

I'm connecting GRBL by a bluetooth module with Linvor firmware - it creates a virtual COM port, but it isn't detected (by rxtx?) -> I can't select the port.
Would it be possible to enable setting a serial port e.g. on commandline?
Controlling GRBL manually by putty serial connection is a little bit ugly, espetially when there is this nice alternative. On Linux I'd create a symlink, but on on windows there isn't such possibility.

Raspberry Pi, openjdk7 trouble

(I am not a power user)

Fresh download of universal gcode sender v1.0.5 to a Raspberry Pi running latestest debian wheezy with armh (hardware floating point) architecture. downloaded & installed java:

pi@raspberrypi ~ $ uname -a
Linux raspberrypi 3.2.27+ #250 PREEMPT Thu Oct 18 19:03:02 BST 2012 armv6l GNU/Linux
pi@raspberrypi ~ $ update-alternatives --display java
java - auto mode
  link currently points to /usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java
/usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java - priority 1063
  slave java.1.gz: /usr/lib/jvm/java-7-openjdk-armhf/jre/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-7-openjdk-armhf/jre/bin/java'.

running the application via start.sh gives this:

pi@raspberrypi ~/ose/steppernug $ ./start.sh
java.lang.UnsatisfiedLinkError: /tmp/rxtxSerial-8942054022052768266.so: /tmp/rxtxSerial-8942054022052768266.so: cannot open shared object file: No such file or directory (Possible cause: can't load IA 32-bit .so on a ARM-bit platform) thrown while loading gnu.io.RXTXCommDriver
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: /tmp/rxtxSerial-8942054022052768266.so: /tmp/rxtxSerial-8942054022052768266.so: cannot open shared object file: No such file or directory (Possible cause: can't load IA 32-bit .so on a ARM-bit platform)
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1935)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1860)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1834)
    at java.lang.Runtime.loadLibrary0(Runtime.java:845)
    at java.lang.System.loadLibrary(System.java:1084)
    at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
    at com.willwinder.universalgcodesender.CommUtils.getSerialPortList(CommUtils.java:67)
    at com.willwinder.universalgcodesender.MainWindow.loadPortSelector(MainWindow.java:1295)
    at com.willwinder.universalgcodesender.MainWindow.initProgram(MainWindow.java:1105)
    at com.willwinder.universalgcodesender.MainWindow.<init>(MainWindow.java:62)
    at com.willwinder.universalgcodesender.MainWindow$25.run(MainWindow.java:1099)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

In case it is relevant, my installation of the rxtxSerial library is at

/usr/lib/jni/librxtxSerial.so

Any suggestions?

Anyone successfully run this on an RPi?

Thanks,
Chuck

Jogging tracks machine coords, gets confused when work zero is set

I can't decide if this is the same as issue #27 or not, but I was using v1.0.5 tonight with GRBL v0.8c and realized again that the jog doesn't work as I expect after setting work zero.

What happens is that I jog over to set work zero, hit the Reset Zero button on the workflow panel and then when I next press a jog button the machine takes off in multiple directions., usually causing me to have to reset the GRBL shield to stop it before it crashes and then I have pick up my zero again. It's extra exciting if the Z axis starts heading downwards too. :)

The jog buttons appear to be tracking machine zero, but after you set work zero they still send machine zero coords, but relative to work zero. So if I jog to machine X100, Y10, hit the reset zero button and then try and jog X10 more it sends the machine to X110, Y10 relative to work zero. It should either send it to X10, Y0 relative to the work coords, or X110, Y10 relative to machine zero.

Am I explaining it well?

In any case, the expected behavior for jogging should be that it moves X units from the current position, no matter what zero you are currently using.

Estimated Time Remaining

Add a box for an estimated time remaining countdown based in total number of rows, number of rows sent, and current duration.

Start script

Here are two start script for UGC:

UniversalGcodeSender.bat:

java -jar -Xmx256m UniversalGcodeSender-all*.jar

UniversalGcodeSender.sh:

#!/bin/bash

platform='unknown'
unamestr=`uname`
case "$unamestr" in
        Linux)
                platform='linux'
                rootdir="$(dirname $(readlink -f $0))"
        ;;
        Darwin)
                platform='mac'
                rootdir="$(cd $(dirname $0); pwd -P)"
        ;;
esac

case "$platform" in
        mac)
                java -Xdock:name=UniversalGCodeSender -jar -Xmx256m $rootdir/UniversalGcodeSender-all*.jar
        ;;
        linux)
                java -jar -Xmx256m $rootdir/UniversalGcodeSender-all*.jar
        ;;
esac

Manually entering a comment line is slow

If you put something like "; commented line" or "(commented line)" into the command text area the program freezes.

If you wait a while it eventually does the right thing... but what is it doing??

no serial ports found in linux

When starting Universal-G-Code-Sender I get an error that no serial ports are found. My Arduino is however connected and accessible at /dev/ttyACM0.
It would be good to be able to manually specify which device to use.

Add Visualizer

Visualize GCode tool path and current position in 3D.

WARNING: Can't load settings file!

Hi,

i downloaded developement files as .zip format and tried to open with Netbeans 7.2.1
however , when i try to run the project it gives me some errors.

starting with settings file errors. it tries to locate a file named ".UniversalGcodeSender.properties" but it can't find it.

how can i overcome this problem?

thanks

Text area that displays the most recent comment.

CamBam will add comments to the g-code file for each milling operation, it would be neat to have a text area dedicated to showing the last comment so you could instantly see what milling operation was being sent.

Allow manual commands to run while paused

Feature request onShapeOko forum

This is a tricky one and may not be possible. Two technical problems:

  1. The pause button can stop GRBL half way through a command, so it would have to continue until the end of the command and then insert the "Z 40".
  2. Currently I stream commands to GRBL, so there are probably several commands already sent to GRBL which would need to finish.

command sending stop after G0/1 about 8 cmds, own arduino FW

Hello, please help me,
I make own arduino mega FW for cnc router with stepper motor driver shield and L298N, based on a lot of older open source publicated codes. All is done, but this universal gcode sender alway stop, after I run batch of gcode, I think that's in new and smart grbl/teacup/merlin processing g0/g1 code as asynchrous, and cached,
My FW wont process only 1 code, that Its run, and send ok...

What command I must send to UGCS from my FW?

Visualize Windows does not work on Raspbian / RaspberryPi

Just tried to get the new Visualizer Window running on my RaspberryPi running raspbian
Found some issues here.

First, 2 more libs for the arm Platform are needed, which can be found in the Processing project:

gluegen-rt-natives-linux-armv6hf.jar
jogl-all-natives-linux-armv6hf.jar

With this libs added, UniversalGcodeSender compiles and starts.

Then if i try to open the Visualizer Windows via the Visualize Button i get the following Exception:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.media.nativewindow.DefaultGraphicsConfiguration cannot be cast to com.jogamp.nativewindow.awt.AWTGraphicsConfiguration
at javax.media.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas.java:1096)
at javax.media.opengl.awt.GLCanvas.addNotify(GLCanvas.java:529)
at java.awt.Container.addNotify(Container.java:2769)
at javax.swing.JComponent.addNotify(JComponent.java:4734)
at java.awt.Container.addNotify(Container.java:2769)
at javax.swing.JComponent.addNotify(JComponent.java:4734)
at java.awt.Container.addNotify(Container.java:2769)
at javax.swing.JComponent.addNotify(JComponent.java:4734)
at javax.swing.JRootPane.addNotify(JRootPane.java:756)
at java.awt.Container.addNotify(Container.java:2769)
at java.awt.Window.addNotify(Window.java:770)
at java.awt.Frame.addNotify(Frame.java:487)
at java.awt.Window.pack(Window.java:807)
at com.willwinder.universalgcodesender.VisualizerWindow.(Unknown Source)
at com.willwinder.universalgcodesender.MainWindow.visualizeButtonActionPerformed(Unknown Source)
at com.willwinder.universalgcodesender.MainWindow.access$600(Unknown Source)
at com.willwinder.universalgcodesender.MainWindow$8.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

Might be a bug with jogl on the arm platform, i will try to find out how to fix this.

File send state change issues

There are a couple issues with file send state changes:

  1. File Send, Pause, cancel
    With Grbl 0.8 the resume command is never sent.
  2. File Send, cancel, manual commands
    This didn't seem to work.

Gcode comments shouldn't be calculated into buffer size

The streamCommands function looks like this:

if (command fits into grbl's buffer) {
strip commands comments
send command
}

The strip commands comments part should happen before the if.

One problem that this causes is that if there is a long comment which wouldn't fit into GRBL's buffer, the file send will be blocked.

Show Dimensions/ max y,x,z Values in GCode File.

Additional to the new GCode Preview it would be really nice to see the maximum (and minimum) X and Y (maybe Z) values in mm/cm used in the GCode File relative to the start Position.
This would help to check if the used material is large enough. and if the start Position on the material is OK.
As the GCode is parsed anyway, this cold be easily done while parsing the gcode and just storing the max/min values.

Remember baud rates and line termination

As it is now it seems that UGC doesn't remember the baud and line termination settings. It would be helpful if it could save the settings so at next run you only need to press Open.

Radio Buttons to set Inch/Metric?

I know most people use metric, but I'm old school and like to run in inch mode.

It's easy enough to put the machine into inch mode using the command window, but I don't always remember what mode it's in and it resets to metric by default.

Telling it to jog 10 when you are not sure what mode the machine is in can get exciting and sometimes causes me to hit the reset button, thus losing my zero.

Can the program have radio buttons to set inch/mm and track the current state?

skips line if manual command is executed after file load

I found a little bug, the good news is that it is repeatable.

  1. connect to GRBL
  2. load gcode file
  3. enter manual command: $h to start homing cycle
  4. press send button to send the file
  5. it will count down one line and it will forget to sent one line of gcode from the file

workaround

  1. connect to GRBL
  2. enter manual command: $h to start homing cycle
  3. load gcode file
  4. press send button to send the file
  5. job OK

Bug

There sees to be a pretty annoying issue. The program jumps a line and doesn't seen it, usually a z up command when drilling and it keeps breaking bits. It is a problem that has persisted along all the software versions.
Here is a picture of it. https://dl.dropbox.com/u/21362255/Bug.png

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.