#!/usr/bin/python3 ######## Craftsman toolchange ######## #### Creator: Piet van Rensburg ##### #### Company: Craftsman CNC ##### #### wwww.craftsmancnc.com.au ##### ################################################ import sys, os import gettext, gobject BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), "..")) gettext.install("linuxcnc", localedir=os.path.join(BASE, "share", "locale"), unicode=True) sys.path.append('./') import linuxcnc, hal import globals stat = linuxcnc.stat() lc = linuxcnc.command() _after = None props_set = False def do_change(n): global props_set stat.poll() curr_line = stat.current_line globals.tool_change(str(curr_line)) globals.set_tooldata(n) globals.get_tooldata() tool_desc = globals.tool_desc if n: message = "Insert tool: T" + str(n) + " - " + tool_desc + ". Click Start when ready" globals.ops_message(message) else: message = "Remove the tool and click Start when ready" globals.ops_message(message) if curr_line >= 0: lc.abort() globals.ops_message(message) h.changed = False props_set = False curr_line = -1 #pass h.changed = True props_set = True h = hal.component("craftsman_toolchange") h.newpin("number", hal.HAL_S32, hal.HAL_IN) h.newpin("change", hal.HAL_BIT, hal.HAL_IN) h.newpin("changed", hal.HAL_BIT, hal.HAL_OUT) h.newpin("length", hal.HAL_S32, hal.HAL_IN) h.newpin("diameter", hal.HAL_S32, hal.HAL_IN) h.ready() try: while 1: change = h.change if change and not h.changed: do_change(h.number) elif not change: h.changed = False except KeyboardInterrupt: pass