Compare commits

..

No commits in common. "0308d4796717450ac6f9cfc1b68632840296f1f9" and "9f798791c559347d56eb70c0d39e10295f17386a" have entirely different histories.

7 changed files with 16 additions and 91 deletions

View File

@ -31,39 +31,7 @@ Should run on any System wit at least 1024x600 Screen Resolution.
`python cnc_gerbil.py` `python cnc_gerbil.py`
or or
`cd dist` `cd dist`
`./cnc_gerbil` (Bundled pyinstaller executable) `./cnc_gerbil`
## Settings
`nano settings.py`
or any other editor to setup to your specific usecase, the options are:
- The resolution of your SBC-screen
`resolution = '1024x600+0+0'`
- When running on SBC with touch set to: True
`set_fullscreen = False`
- Platform dependent com ports
`portlist = ['/dev/ttyUSB0', '/dev/ttyACM0', '/dev/ttyUSB1', '/dev/ttyACM1', '/dev/ttyACM2', '/dev/ttyACM3',
'/dev/ttyS0', '/dev/ttyS1', '/dev/ttyS2', '/dev/ttyS3']`
- Where the file dialog points to. Ideally some Nextcloud folder or Samba share etc.
`basepath = '/home/'`
- Machine commands
`spindle_on = 'M3S1000' `
`spindle_off = 'M5'`
`cooling_on = 'M8' `
`cooling_off = 'M9' `
`toolchange = 'G10 P0 L20 X0 Y0 Z0' `
- Table Info Text
`table_text = 'Fräsbereich 300mm x 300mm'`
### Based on: ### Based on:
Python3 Python3

View File

@ -3,8 +3,7 @@ import time
from tkinter import Button, Label, Variable, IntVar, Canvas, Frame, Listbox, Entry, Radiobutton, Tk, constants, LEFT from tkinter import Button, Label, Variable, IntVar, Canvas, Frame, Listbox, Entry, Radiobutton, Tk, constants, LEFT
from tkinter import filedialog as fd from tkinter import filedialog as fd
import os import os
from grbl_streamer import GrblStreamer from gerbil.gerbil import Gerbil
import settings
class touchCNC: class touchCNC:
def __init__(self, root): def __init__(self, root):
@ -314,7 +313,8 @@ class touchCNC:
def grblConnect2(self, baudrate=115200, max_retries=5, retry_interval=3): def grblConnect2(self, baudrate=115200, max_retries=5, retry_interval=3):
retry_count = 0 retry_count = 0
locations = settings.portlist locations = ['/dev/ttyUSB0', '/dev/ttyACM0', '/dev/ttyUSB1', '/dev/ttyACM1', '/dev/ttyACM2', '/dev/ttyACM3',
'/dev/ttyS0', '/dev/ttyS1', '/dev/ttyS2', '/dev/ttyS3']
# Configure logging # Configure logging
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
@ -409,13 +409,13 @@ class touchCNC:
def get_grbl_command(self, CMD): def get_grbl_command(self, CMD):
if CMD == 'M3': if CMD == 'M3':
return settings.spindle_on if self.states['M3'] == '1' else settings.spindle_off return 'M3 S1000' if self.states['M3'] == '1' else 'M5'
elif CMD == 'M8': elif CMD == 'M8':
return settings.cooling_on if self.states[CMD] == '1' else settings.cooling_off return CMD if self.states[CMD] == '1' else 'M9'
elif CMD == 'G10': elif CMD == 'G10':
return settings.toolchange return 'G10 P0 L20 X0 Y0 Z0'
elif CMD == '32': elif CMD == '32':
return '$32=0' if self.states['32'] == '1' else '$32=1' return '$32=0' if self.states['32'] == '1' else '$32=1'
@ -428,7 +428,7 @@ class touchCNC:
def openGCODE(self): def openGCODE(self):
filetypes = (('GCODE', '*.nc'), ('All files', '*.*')) filetypes = (('GCODE', '*.nc'), ('All files', '*.*'))
if not self.file_list: if not self.file_list:
GCODE = fd.askopenfilename(title='Open a file', initialdir=settings.basepath, filetypes=filetypes) GCODE = fd.askopenfilename(title='Open a file', initialdir='/home/', filetypes=filetypes)
else: else:
GCODE = self.load_gcode_from_listbox() GCODE = self.load_gcode_from_listbox()
@ -471,7 +471,7 @@ class touchCNC:
def openDir(self): def openDir(self):
self.file_list = [] self.file_list = []
self.path_list = [] self.path_list = []
directory = fd.askdirectory(title='Open a Folder', initialdir=settings.basepath) directory = fd.askdirectory(title='Open a Folder', initialdir='/home/')
allowed_extensions = {'nc', 'GCODE'} # Use a set for efficient membership testing allowed_extensions = {'nc', 'GCODE'} # Use a set for efficient membership testing
if directory: if directory:
@ -602,7 +602,7 @@ class DrawonTable:
self.mill_table.delete('all') self.mill_table.delete('all')
self.mill_table.create_rectangle(50, 50, 350, 350, fill='white') self.mill_table.create_rectangle(50, 50, 350, 350, fill='white')
self.mill_table.create_text(200, 25, text=settings.table_text) self.mill_table.create_text(200, 25, text='Fräsbereich 300mm x 300mm')
for x in range(50, 350, 50): for x in range(50, 350, 50):
self.mill_table.create_text(x, 400 - x, text=x - 50) self.mill_table.create_text(x, 400 - x, text=x - 50)
@ -616,15 +616,16 @@ class DrawonTable:
if __name__ == "__main__": if __name__ == "__main__":
root = Tk() root = Tk()
root.title('touchCNC') root.title('touchCNC')
root.geometry(settings.resolution) root.geometry('1024x600+0+0')
root.grid_propagate(True) root.grid_propagate(True)
root.resizable(False, False) # 17203b root.resizable(False, False) # 17203b
root.attributes('-fullscreen', settings.set_fullscreen) root.attributes('-fullscreen', False)
root.tk_setPalette(background='#4B4A67', foreground='black', activeBackground='#F99417', root.tk_setPalette(background='#4B4A67', foreground='black', activeBackground='#F99417',
activeForeground='lightgrey') activeForeground='lightgrey')
app = touchCNC(root) app = touchCNC(root)
grbl = GrblStreamer(app.gui_callback) grbl = Gerbil(app.gui_callback)
grbl.hash_state_requested = True grbl.hash_state_requested = True
grbl.gcode_parser_state_requested = True grbl.gcode_parser_state_requested = True

22
dist/settings.py vendored
View File

@ -1,22 +0,0 @@
# The resolution of your SBC-screen
resolution = '1024x600+0+0'
# When running on SBC with touch set to: True
set_fullscreen = False
# Platform dependent
portlist = ['/dev/ttyUSB0', '/dev/ttyACM0', '/dev/ttyUSB1', '/dev/ttyACM1', '/dev/ttyACM2', '/dev/ttyACM3',
'/dev/ttyS0', '/dev/ttyS1', '/dev/ttyS2', '/dev/ttyS3']
# Where the file dialog points to. Ideally some Nextcloud folder or Samba share etc.
basepath = '/home/'
# Machine commands
spindle_on = 'M3S1000'
spindle_off = 'M5'
cooling_on = 'M8'
cooling_off = 'M9'
toolchange = 'G10 P0 L20 X0 Y0 Z0'
# Table Info Text
table_text = 'Fräsbereich 300mm x 300mm'

1
gcode_machine Submodule

@ -0,0 +1 @@
Subproject commit 624f71ae1549b13a94aec5c58b9bb0337346225f

1
gerbil Submodule

@ -0,0 +1 @@
Subproject commit 78aa148f0ae98c7dc686eeeb47e2040f40486dab

View File

@ -1,5 +1,3 @@
altgraph==0.17.4 altgraph==0.17.4
gcode-machine==1.0.3
grbl-streamer==1.0.3
numpy==1.26.2 numpy==1.26.2
pyserial==3.5 pyserial==3.5

View File

@ -1,22 +0,0 @@
# The resolution of your SBC-screen
resolution = '1024x600+0+0'
# When running on SBC with touch set to: True
set_fullscreen = False
# Platform dependent
portlist = ['/dev/ttyUSB0', '/dev/ttyACM0', '/dev/ttyUSB1', '/dev/ttyACM1', '/dev/ttyACM2', '/dev/ttyACM3',
'/dev/ttyS0', '/dev/ttyS1', '/dev/ttyS2', '/dev/ttyS3']
# Where the file dialog points to. Ideally some Nextcloud folder or Samba share etc.
basepath = '/home/'
# Machine commands
spindle_on = 'M3S1000'
spindle_off = 'M5'
cooling_on = 'M8'
cooling_off = 'M9'
toolchange = 'G10 P0 L20 X0 Y0 Z0'
# Table Info Text
table_text = 'Fräsbereich 300mm x 300mm'