A control panel for Grbl
gerritv / grbl-panel Goto Github PK
View Code? Open in Web Editor NEWA control panel for Grbl
License: MIT License
A control panel for Grbl
License: MIT License
Initially I thought it best to not save these settings but will add them back in.
For the MDI command text box, I think the following features would be useful.
@gerritv , I have been working on my version of a GRBL interface, which you have seen on the grbl github pages. I have it running very well, and did a comparison of cycle time between mine and GRBL Panel. I consistently get slightly higher cycle times with my program vs GRBL-Panel and Universal G-code sender. The latter two are very close in cycle time. I am trying to figure it out and had a few questions for you since you seem pretty knowledgable in programming respects.
1 - is GRBL-Panel using a simple send/read response streaming protocol, or is it using a buffer fillinf character counting scheme as described in the grbl WIKI? Mine is just using a simple:
send....wait for "ok"...send....wait for "ok"...send.... type protocol. I'm hoping you will tell me that you used character counting and that is why mine is slower, because that is something I can fix later.
2 - If the answer to 1 is that you are using the simple send/read response protocol, then I have something else going on. As you may recall, I am using Visual Basic 2005 because I'm targeting a windows 98 machine. Do you think that there would be a difference in speed of the resulting program using VB2005 vs VS2013?
3 - What operations are your performing on the g-code lines before sending? For example, are you parsing every line? Checking for g-code errors? etc...
I have my parser set up to do the following:
a: Read every line and separate into individual "words" (single letter followed by numbers)
b; Sort and save the "words" into a string array for later use by things like canned cycles subroutine.
This string array has a certain value for each array index. (ie: index 0 is for Motion group codes (G0, G1, G2....)
c: Check the array index value for motion codes to see if the sent line is GRBL supported, and if so, put the line back together and send it to GRBL (the sent line is without spaces or comments).
d: if the Array index value for motion modes is one supported by my GUI, then act on it. If not, then send a message to the user that an command not supported by GRBL or the GUI was found.
Thanks in advance,
John Brannen
I'd like to see a couple buttons that are linked to custom gcode. They would work just like Go To Spcl Posn1 and Posn2 buttons. For example, I have a command that I use all the time for my touch plate: G20 G38.2 Z-2 F0.118
It would be nice if in addition to storing the command, the user could also name the button, so you'd have two text fields, one for the button name, one for the Gcode
So I use this G-Code in a macro.
G90
G21
$H
M00
G92 Z0
G01 Z-20 F1000
F500
G38.2 Z-60
G92 Z0
G01 Z5
F50
G38.2 Z-7
G92 Z6.6
G01 Z30 F1500
G53 X-708 Y-1463.7 F4000
G92 X0 Y0
On the last line, the G92 dont set my X0 Y0.
On my very next move I receive a error Invalid gcode ID:24
If I load the G-Code as a file, it works great.
What do you think that could be.
Just downloaded the new version 1.0.9.0
When trying to Jog get the following error
************** Exception Text **************
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: value
at System.Windows.Forms.DataGridView.set_FirstDisplayedScrollingRowIndex(Int32 value)
at GrblPanel.GrblGui.GrblGcodeView.UpdateGCodeStatus(String stat, Int32 index)
at GrblPanel.GrblGui.processLineEvent(String data)
at GrblPanel.GrblIF.raiseAppSerialDataEvent(String data)
at GrblPanel.GrblIF.VB$StateMachine_40__client_ComReadData.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
went back to 1.0.8.0 all working ok
I am not able to get the Mega2560 to communicate to the Grbl-Panel.
It is working for Arduino Serial Console, UGS & Putty. So I know that serial communication from the controller is working.
Do you have any suggestions?
I was not setting a jog increment or rate on load, this enhancement corrects that. Whatever you have it set to is saved on exit.
In the offsets section of GRBL-panel, how do I send the entered offsets to GRBL?
Hi,
I am using CNC xPRO V2 driver
windows 10
first time user.
New Setting parameter value are not being updated.
I am going to into filed changing value in settings.
e.g. changing $132 from 200 to 80.
The edit mode pencil image comes up.
I go to different field so that value is changed automatically on the driver board.
Connect , disconnect , the settings parameter value remains default to 200
How do you use the IP Settings ?
Hi,
I added a checkbox to set the 3 axis position displays to inches or mm. Code change just divides the positions by 25.4 before setting the numerical text boxes for position display.. I'm an old 'inches' guy.. I thought there might be a user setting to set this, but I could not find it.. My grbl is working in inches but the display was always mm..
I also added another command button to the open/ run/ pause/ stop group box. The new button is "single step". I was trying out a new g-code generator, and needed to see where things were going bad.. Single stepping thru the g code helped this process. Again, not a rocket science addition, but helped me out.
I'm new to this 'community software' effort.. willing to work on problems/ feature ads/ share my code if anyone is interested.. just do not know how or what are 'the accepted methods/ process for doing so'.. Love the mixture of software/ making things work..
Thanks again for making a nice program..
I've been testing the new build (1.0.5.0) and love the improvements you've made.
Thank you!
Just so you know, Help, About and file details still report the exe as version 1.0.3.0
I'm relatively new to the CNC world and finished assembling my c-beam machine last week. I got it working fine by following the 2 hour tutorial and was able to successfully cutout a couple of items I designed in Sketchup.
The problems started when I installed my limit switches and tried to do a home cycle. The initial tutorial said that the software considers the front, left corner as the zero xyz point. When I enabled homing, it runs all motors in their positive direction which lands the router in the back right corner with the router up as high as it can go. When I tried to run those same files again, the alarm went off immediately as the machine hit its X limit immediately. Apparently the machine didn't get the memo that our new homing direction was the opposite corner. Any ideas on how to fix this?
I am working on a small 2 axis project and of all the programs I have tried I like Grbl-Panel the best.
Just having 1 problem, the position display is blank.
Any idea on what could be the problem?
Andre
I'm sending a manual probe command "G38.2 Z-50 F10" and sometimes the system returns a
"ALARM: Hard/Soft limit"
but I am not on any limit. i can still move in both plus and minus Z. See attached image,
Sometimes this manual probe command works with no problem and other times it does not. I can't figure out what causes the difference. How can I find out which limit it's alarming on?
Please advise.
I found I needed to add a sleep(1000) between the set dtr and clear dtr which is used to reset the arduino.
This cleared my hang on connect. The arduino needs time to completely reset before any commands are issued to it..
Nice program.. using it to control my Shapeoko 2
Thanks
After I load a file I can no longer regenerate it in my CAM. Grbl-panel keeps the file open instead of loading the file into RAM then closing it. I have to keep giving the file a different name each time I regenerate.
I have been using grbl-Panel on my win 8.1 machine for a long time and very pleased but I purchased a new win 10 computer and now it cannot find any com ports?
Grbl controller and Shapeoko software both work without problems but I don't want to use that software.
I want Grbl-Panel to work again.
Any suggestions.
Joe L.
GrblPanel relies on having work, machine, parser queue size and receive buf info in the response to Status Poll.
Protect code in case this is not so.
Autodesk decided that GRBL needs a % at the top of the file (they probably were testing with UGS or another horribly buggy sender). This causes grbl-panel to stop; it won't resume. Could you detect and ignore async commands?
Sorry to flood you with reports suddenly. Even with these issues this is a really nice tool. I got tired of dealing with UGS lockups.
The Grbl Settings are empty and when trying to "Get Grbl Settings" i get the following error message.
Unhandled exception has occurred in your application. If you click Continiue ....
Column "ID' is constrained to be unique. Value '$0'is already present. ---- remark :The '$#'changes to different values.
The details Window reveals:
===============================================================================See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Data.ConstraintException: Column 'ID' is constrained to be unique. Value '$0' is already present.
at System.Data.UniqueConstraint.CheckConstraint(DataRow row, DataRowAction action)
at System.Data.DataTable.RaiseRowChanging(DataRowChangeEventArgs args, DataRow eRow, DataRowAction eAction, Boolean fireEvent)
at System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exception& deferredException)
at System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID, Int32 pos, Boolean fireEvent)
at System.Data.DataRowCollection.Add(Object[] values)
at GrblPanel.GrblGui.GrblSettings.FillSettings(String data) in C:\Users\gerrit\Documents\My Projects\GrblPanel-0.1.0.6\Grbl-Panel\GrblSettings.vb:line 69
at GrblPanel.GrblGui.showGrblStatus(String data) in C:\Users\gerrit\Documents\My Projects\GrblPanel-0.1.0.6\Grbl-Panel\GrblStatus.vb:line 206
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
GrblPanel
Assembly Version: 1.0.3.0
Win32 Version: 1.0.3.0
Microsoft.VisualBasic
Assembly Version: 8.0.0.0
Win32 Version: 8.0.50727.8670 (QFE.050727-8600)
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Runtime.Remoting
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
RepeatButton
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8670 (QFE.050727-8600)
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.8693 built by: QFE
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.8677 (QFE.050727-8600)
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
I had value showing up when I started the program the first time.
Then I clicked something and then the settings disappeared and I got this error.
I have rebooted/-run ccleaner/ cleared cashe and deleted and copied the files back into place.
...so far no luck
Any Ideas what I should do to get it running?
Thanks for the nice program and helping.
Best regards
Jurgen
Thank you! Read 1M line less than 3 seconds, very fast.
I sent Roy Rogers Metric.nc this gcode,
Use V1.0.7.0 send 100 line 2 seconds,
Use V1.0.9.0a send 100 line 8 seconds,
Sorry, my English is not good.
First, I think this is the best sender that I have used. It has great possibilities but the keyboard stops working for controlling the machine. I need to use a pendant because the computer is to far away to move then check then move then check. I can use the program Xpadder to set keyboard calls to buttons on a USB gaming pad. This allows me to stand in front of my machine and set Zero's, change rates. But the keyboard calls seem to lose focus when I move into another part of the program.
All of this can be done on UGS, but I prefer this program.
Thanks for writing this. It is by far the best Grbl controller I've tried - simple, but powerful.
Here is some feedback after first use:
As I said, great work. I'm not a developer, but I'd be happy to help test.
Thanks
Set initial default, them remember where user placed app
Take into account multiple monitors, and if the monitor is no longer there.
@mschorer submitted this
Open gcode very large file, wait a long time to prepare. About 100 million lines of gcode.
Hi!
First off: What a great concept! I will be following this closly!
While jogging the machine manually and metric box checked, the distances traveled does corelate with chosen distance. Each step gives me 5 mm (.01=0.5mm, 1=5mm and so on.)
I am eager to try Grbl-Panel but cannot get the arduino for my xcarve to connect. Tried disabling the polling and cranking up the startup delay, as suggested in previous issues. After rescan the com port usually comes back with some wonky character following the port number. Tried both the scanned string and just typing COM3 to no avail. Any ideas? No trouble connecting with UGCS, but would like better control over the machine.
I've been using Grbl-Panel quite a bit over the last couple of weeks, and it's been great.
Here are a couple of suggestions that would be very helpful based on my experience.
I'm looking forward to the next version. Let me know if there's anything you need tested.
Thanks!
GrblPanel-Release-1.0.9.1 resize max send gcode slows down
see vedio>> https://youtu.be/IWzbjGZSo0Q
<1> I tested V1.0.9.2 send gcode no problem, but sent gcode time becomes very long.
I sent Roy Rogers Metric.nc this gcode normally about 5 hours 52 minutes, V1.0.9.2 more than 10 hours.
<2> If I change the fram vertical size, send gcode speed will be very different.
see vedio >> https://youtu.be/teW8dO3vfsM
Hi Gerrit. I'm not getting any feedback on machine position. The program homes perfectly and I can move the Lathes tool tip to precise coordinates. It doesn't show me position like with your screenshots? And thus I cant save G54 positions correctly
Testing out version 1.0.6 it seems the homing button is missing at least on mine.
I can still call $H from the command line.
Thanks for the Great work @gerritv
Hello,
first of all : welcome to the creators of interfaces and congratulations for the work already done.
I use Vista (French) with ',' instead '.'
This always causes a crash !
I can not change my PC, because I have too many application running in French.
Are you considering internationalization?
Best regards
how would be possible to implement a joystick to move the cnc machine using grbl?
is there any tutorial in how to achive that?
I've the Arduino connected on COM4 and I can't connect on the first time when program start cause of wrong port name.
In fact the dropdown menu doesn't show COM4 but COM4 with another strange random character like COM4漢 so I can't connect cause it says that the port doesn't exist.
I've to rescan several times before i can get only COM4 showing and at least each rescan the random character change. I've tried to launch the program with amministrator right too but unsuccessful.
It's my issue or others in my situation?
I know one may issue an gcode command to set the work offset to a value (as opposed to just zero). I've been using probing to find the edges of my stock or vise depending on which I used in my CAM program. I am using a feeler gauge with a wire attached to it and an alligator clip attached to the tool in the spindle. I'd like to just be able to type in the value for an axis once the probe is done. ie. if I am using a 1mm feeler gauge for setting z I'd like to be able to set the z axis to 1. Right now I have to set it to 0 via the gui, move the x and y away from the part, move down 1mm and then reset to 0. As an example, I know mach3 does this.
I downloaded the latest Zip file, but it's just the source code. How can I get the compiled exe?
Thanks
GrblPanel uses vb.net, which saves Settings in specific locations. User.config is the file used to save your modified settings. This is stored in a directory based on user name, and application signature. As such it is a) not easy to find, b) the application signature changes for each release. The end result is that your custom settings 'disappear'.
The solution is to write a custom SettingsPRovider class. I will do this but not sure about the timeline. In meantime you will have to copy the user.config file from the previous directory to new one. :-(
On Win10 this directory is c:/users//AppData/GrblPanel
Yay, looking good - i'll give it a whirl tonight.
my 5ct from first looks:
What is the point of the control sub-panel. None of the buttons seem to perform any function. I can't find anything in the documentation about the sub-panel either.
As the subject line says.
My laptop has a 1440x900 screen and cannot properly display the app. I suspect this is due to the issues you list earlier with horizontal stretch, etc. Anyway, it makes using the app difficult as the control box overlays and obscures the gcode box; the mdi box overlays the grbl box, both overlay the position box. Also when not maximized, there is no scroll bar, but when maximized, there is. Very odd.
Overall, a very nice start. I particularly like the setting tab. Other minor nits are already covered by yours and others comments and feedback.
Looking forward to the next release.
To deal with very large files, this should be resizeable. (Auto-resize has side issues, already tried that)
Gerritv I am sorry to report I am getting the following error when I connect the comm port
************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at GrblPanel.GrblGui.showGrblPositions(String data)
at GrblPanel.GrblIF.raiseAppSerialDataEvent(String data)
at GrblPanel.GrblIF.VB$StateMachine_40__client_ComReadData.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
I've read a couple of the issues about the port scanning problem under Windows 10. The fix, for some, has been to run under Windows 7 compatibility mode but that doesn't seem to solve the problem for everyone.
In my case I just noticed that I always had extra characters after the comport name like in other examples of this issue, e.g. COM4漢. My solution doesn't address the problem directly but just finds a work around. I replaced the code of the rescan() function in GrblIIF from this,
Public Function rescan() As String()
' scan for com ports again
Return IO.Ports.SerialPort.GetPortNames
End Function
to this,
Public Function rescan() As String()
' scan for com ports again
Dim aTemp() As String
aTemp = IO.Ports.SerialPort.GetPortNames
For iCounter As Integer = 0 To UBound(aTemp)
aTemp(iCounter) = "COM" & Val(Right(aTemp(iCounter), Len(aTemp(iCounter)) - 3))
Next
Return aTemp
End Function
What it does is, instead of just reading the port names that are returned by the GetPortNames() function it takes the list and rebuilds it without the extraneous characters. I recreated the name of the comport by taking the portion after the word COM and converting it to a number. The VAL() function converts the numbers it finds to a number and throws the extra characters away. Then I concatenate the word COM back into the name. This fills the list and when I try to connect to my comport it calls the correct port's name.
I realize it doesn't address the problem of why the comport names are coming in wrong in the first place but it does work.
I hope that's helpful to anyone.
Presently the display doesn't stretch horizontally. This was done when I added LH or RH view. Just setting the Anchor property on the group boxes doesn't work for both cases.
Default screen size is 1159x768 for now
Low priority.
Tested out the 1.0.9a code tonight and kept running into unhandled exception errors when the datagrid was empty.
For example. Open the program, connect to comport, press Unlock and then Home. After Home command finishes, change the cbxStateOffset from Metric to Inches. boom, unhandled exception. Quit/close program and restart. Connect, unlock, home, click G55 offset set button. boom unhandled exception.
Running code in the debugger while connected to cnc machine revealed error was thrown right before the _dgview.Refresh() at the end of the UpdateGCodeStatus routine. Specifically, it was thrown on the IF statement in the last ELSE.
If (_dgview.FirstDisplayedScrollingRowIndex + _dgview.DisplayedRowCount(True) <= index) Then
_dgview.FirstDisplayedScrollingRowIndex = index - _dgview.DisplayedRowCount(True) + 1
End If
I've corrected this by changing it to this,
If (_dgview.FirstDisplayedScrollingRowIndex + _dgview.DisplayedRowCount(True) <= index) And index <> 1 Then
_dgview.FirstDisplayedScrollingRowIndex = index - _dgview.DisplayedRowCount(True) + 1
End If
Can anyone else test this and respond?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.