vlachoudis / bCNC

GRBL CNC command sender, autoleveler and g-code editor
GNU General Public License v2.0
1.54k stars 528 forks source link

bCNC

GrblHAL (formerly GRBL) CNC command sender, autoleveler, g-code editor, digitizer, CAM and swiss army knife for all your CNC needs.

An advanced fully featured g-code sender for grblHAL (formerly GRBL). bCNC is a cross platform program (Windows, Linux, Mac) written in python. The sender is robust and fast able to work nicely with old or slow hardware like Raspberry Pi (As it was validated by the GRBL maintainer on heavy testing).

IMPORTANT! If you have any troubles using bCNC, please read WIKI and DISCUSS it first. Only create new issues when you are certain there is a problem with actual bCNC code.

Build Status CodeFactor

All pull requests that do change GUI should have attached screenshots of GUI before and after the changes. Please note that all pull requests should pass the Travis-CI build in order to get merged. Most pull requests should also pass CodeFactor checks if there is not good reason for failure. Before making pull request, please test your code on both python2 and python3.

bCNC screenshot

Installation (using pip = recommended!)

This is a short overview of the installation process, for more details see the bCNC installation wiki page.

This is how you install (or upgrade) bCNC along with all required packages. You can use any of these commands (you need only one):

pip install --upgrade bCNC
pip install --upgrade git+https://github.com/vlachoudis/bCNC
pip install . #in git directory
python -m pip install --upgrade bCNC

This is how you launch bCNC:

python -m bCNC

Only problem with this approach is that it might not install Tkinter in some cases. So please keep that in mind and make sure it's installed in case of problems.

If you run the python -m bCNC command in root directory of this git repository it will launch the git version. Every developer should always use this to launch bCNC to ensure that his/her code will work after packaging.

Note that on Windows XP you have to use pyserial==3.0.1 or older as newer version do not work on XP.

PyPI project: https://pypi.org/project/bCNC/

Installation (manual)

You will need the following packages to run bCNC

Expand the directory or download it from github and run the bCNC command

Installation (Linux package maintainers)

Installation (Compile to Windows .exe)

Note that you might probably find some precompiled .exe files on github "releases" page: https://github.com/vlachoudis/bCNC/releases But they might not be up to date.

This is basic example of how to compile bCNC to .exe file. (given that you have working bCNC in the first place, eg. using pip install bCNC). Go to the directory where is your bCNC installed and do the following:

pip install pyinstaller
pyinstaller --onefile --distpath . --hidden-import tkinter --paths lib;plugins;controllers --icon bCNC.ico --name bCNC __main__.py

This will take a minute or two. But in the end it should create bCNC.exe. Also note that there is make-exe.bat file which will do just that for you. This will also create rather large "build" subdirectory. That is solely for caching purposes and you should delete it before redistributing!

If you are going to report bugs in .exe version of bCNC, please check first if that bug occurs even when running directly in python (without .exe build).

IMPORTANT! Motion controller (grblHAL) settings

Configuration

You can modify most of the parameters from the "CAM -> Config/Controller" page. You can also enable (up to) 6-axis mode in Config section, but bCNC restart is required for changes to take place. Only the changes/differences from the default configuration file will be saved in your home directory ${HOME}/.bCNC or ~/.bCNC

The default configuration is stored on bCNC.ini in the installation directory.

PLEASE DO NOT CHANGE THIS FILE, IT'S GOING TO BE OVERWRITTEN ON EACH UPGRADE OF BCNC

Features:

Debugging

You can log serial communication by changing the port to something like:

spy:///dev/ttyUSB0?file=serial_log.txt&raw
spy://COM1?file=serial_log.txt&raw

If a file isn't specified, the log is written to stderr. The 'raw' option outputs the data directly, instead of creating a hex dump. Further documentation is available at: https://pyserial.readthedocs.io/en/latest/url_handlers.html#spy

Disclaimer

The software is made available "AS IS". It seems quite stable, but it is in an early stage of development. Hence there should be plenty of bugs not yet spotted. Please use/try it with care, I don't want to be liable if it causes any damage :)