adding files

This commit is contained in:
2026-03-21 23:48:08 +01:00
parent eba2b73dec
commit 18f86cfd1e
105 changed files with 13770 additions and 0 deletions

138
my-emco/gladevcp-handler.py Normal file
View File

@@ -0,0 +1,138 @@
#!/usr/bin/ python
import gtk
import gobject
import linuxcnc
import hal
import hal_glib
import xml.etree.ElementTree as ET
debug = 0
class ToolTableParser:
def __init__(self, f):
self.f = open(f, 'r')
self.list = gtk.ListStore(int, str, str)
self._parse_file()
self.f.close()
def __repr__(self):
ret_str = ''
for l in self.list:
ret_str += str(l) + '\n'
return ret_str
def get_parsed_data(self):
return self.list
def _parse_file(self):
lines = self.f.readlines()
i = 0
for line in lines:
tool_nbr = line.split(' ')[0]
tool_descr = tool_nbr + ' ' + line.split(';')[1]
self.list.append([i, tool_descr, tool_nbr])
i = i+1
class XmlParser:
def __init__(self, f):
self.tree = []
self.list = gtk.ListStore(int, str, str)
self._parse_file(f)
def get_parsed_data(self):
return self.list
def _parse_file(self, f):
self.tree = ET.parse(f)
root = self.tree.getroot()
i = 0
for func in root.iter('function'):
gcode = func.find('gcode')
# create the LinuxCNC hal pin and create mapping dictionary binding incomming events with data and the hal pins
if gcode is not None:
self.list.append([i, func.text, gcode.text])
i = i+1
class HandlerClass:
def on_destroy(self,obj,data=None):
print "on_destroy, combobox active=%d" %(self.combo.get_active())
self.halcomp.exit() # avoid lingering HAL component
gtk.main_quit()
def on_changed(self, combobox, data=None):
if self.tool_combo_initiated:
model = combobox.get_model()
tool_change_cmd = 'M6' + ' ' + model[combobox.get_active()][2] + ' ' + 'G43'
self._send_mdi(tool_change_cmd)
print tool_change_cmd
def __init__(self, halcomp, builder, useropts):
self.linuxcnc_status = linuxcnc.stat()
self.linuxcnc_cmd = linuxcnc.command()
self.halcomp = halcomp
self.builder = builder
self.useropts = useropts
self.trigger1 = hal_glib.GPin(halcomp.newpin('trigger_pin', hal.HAL_BIT, hal.HAL_IN))
self.trigger1.connect('value-changed', self._trigger_change)
self.trigger2 = hal_glib.GPin(halcomp.newpin('saved-tool-pin', hal.HAL_U32, hal.HAL_IN))
self.trigger2.connect('value-changed', self._init_tool_combo)
func_list = XmlParser('func-btn.xml').get_parsed_data()
self.func_combo = self.builder.get_object('func-btn-combo')
self.func_combo.set_model(func_list)
self.func_combo.set_entry_text_column(1)
self.func_combo.set_active(0)
tool_list = ToolTableParser('tool.tbl').get_parsed_data()
self.tool_combo = self.builder.get_object('tool-combo')
self.tool_combo.set_model(tool_list)
self.tool_combo.set_entry_text_column(2)
self.tool_combo.set_active(0)
renderer_text = gtk.CellRendererText()
self.func_combo.pack_start(renderer_text, True)
self.tool_combo.pack_start(renderer_text, True)
self.tool_combo_initiated = False
def _trigger_change(self, pin, userdata = None):
#setp gladevcp.trigger_pin 1
#print "pin value changed to: " + str(pin.get())
#print "pin name= " + pin.get_name()
#print "pin type= " + str(pin.get_type())
#print "active " + str(self.combo.get_active())
if pin.get() is True:
model = self.func_combo.get_model()
self._send_mdi(model[self.func_combo.get_active()][2])
def _init_tool_combo(self, pin, userdata = None):
#setp gladevcp.saved_tool_pin 2
self.tool_combo.set_active(pin.get())
self.tool_combo_initiated = True
def _ok_for_mdi(self):
self.linuxcnc_status.poll()
return not self.linuxcnc_status.estop and self.linuxcnc_status.enabled and (self.linuxcnc_status.homed.count(1) == self.linuxcnc_status.joints) and (self.linuxcnc_status.interp_state == linuxcnc.INTERP_IDLE)
def _send_mdi(self, mdi_cmd_str):
if self._ok_for_mdi():
self.linuxcnc_cmd.mode(linuxcnc.MODE_MDI)
self.linuxcnc_cmd.wait_complete() # wait until mode switch executed
self.linuxcnc_cmd.mdi(mdi_cmd_str)
def get_handlers(halcomp, builder, useropts):
global debug
for cmd in useropts:
exec cmd in globals()
return [HandlerClass(halcomp, builder, useropts)]