|
GCode sender/editor (for home CNC. grbl-based current) with plugin system. modular, easily expandable and extendable.
with error handling, changing wrong code on the fly and continuing of sending from place of error.
it is highly portable as most of it was written in lua scripting language. utilising aggressive modular strategy, without any heavyweight and system-depended plugins (but currently it tested and used only under linuxes. both ARM and x86)
compile
-------
```
$ ./bld.sh #run this from the root folder
```
run
---
```
$ cd bld
$ ./prg
```
browse/change scripts part
-----------------------------
```
cd bld/conf #and look there
```
browse/change binary part
-------------------------
look starting from root folder. it contain full set of sources (links to their urls are in the README.md)
is it GRBL-only?
----------------
all controller depended parts are separated to it own module (conf/controllers). but was written and tested only grbl module till for now (conf/controllers/grbl)
DESCRIPTION
===========
Frontend (main) part:
=====================
- can load & edit & send g-code files.
Visualiser (display)
--------------------
- visualise g-code in 2 projections: XY and XYZ,
- visualise process of sending,
- visualiser can zoom drawing with buttons on top or with mouse wheel,
- move viewport with mouse,
- highlight a line of drawing by clicking on it (and selects it in the editor list),
Editor
------
- editor shows full list of gcodes,
- can edit gcodes line to line,
- can add lines,
- can remove lines,
- all changes shows on the display,
- currently selected line highlights on the display,
- the line was selected on the display selects itself in the editor list,
- the line where appears an error in the CNC controller selects itself in the editor automatically,
- have ability to send a single gcode line from edited list,
- have ability to set from and to gcode lines to send only part of gcode list,
- can find or replace gcodes line by line using regexps (lua kind),
Terminal
--------
- shows the process of gcode sending,
- can compose and send a single custom gcode string,
- can reedit and resend already sent gcode (just click on it in the terminal list),
- after an error, wrong command appears in the terminal edit. it may be edited and sent again.
- after an error, sending may be continued from next command by clicking on the pause button,
- in the time of send terminal shows number of sent command,
Controller of CNC
-----------------
- can move the CNC spindle by XYZ axes with buttons,
- can change step of moving,
Showroom
--------
- just big visualiser/display. sometimes i need it,
Plugins part:
=============
common description
------------------
- each plugin executed in the its own thread, in the its own global space and in the protected mode,
- all communications with main program occurs using hidden channels,
- plugin it is a folder by the conf/plugins path,
- plugin contains at least 2 files: init.lua and params.lua,
- init.lua it is the main part it should return the special but simple structure,
- params.lua should return a structure with params for editing before execute of plugin,
- current plugins may be 2 types: CAM and Filter,
- CAM - should make and return gcode using module "conf.gen.gcode". it can use any possibility of lua. modules - lua or binary,
- Filter - runtime handler/filter of gcodes. in the time of sending it receives every next gcode line and should return the processed one to send.
..more complete description and formats of will be later.
ready to use plugins/examples
-----------------------------
go to folder conf/pluging
- "gear" - CAM plugin to designing a simple gear (algo was adapted from the bcnc one),
- "roots" - CAM plugin to designing a lobe-roots pump profile (my own algo. haven't found in the internet),
- "picture" - CAM plugin to tracing a picture (*.ppm only now) to gcode using colors as height map (my own algo),
- "svg" - CAM plugin to loading a svg file as gcode (not fully tested. b-condition),
- "dxf" - CAM plugin to loading a dxf file (old library. i think up to autocad2000) as gcode (not fully tested. b-condition),
- cnc2laser - Filter plugin. it allows to send CNC gcode to laser by changing in the runtime Z+ and Z- commands to M5/M3.
Link to git repo:
=================
https://github.com/bhgv/lua.gcode.sender
|
|