а точнее при отработке М30 или М02
я так понимаю нужно сделать так в ini
Код: Выделить всё
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
TOPLEVEL=/home/vl/linuxcnc/configs/wabeco/python/toplevel.py
APPEND=/home/vl/linuxcnc/configs/wabeco/python
# тут будут наши ремапы
REMAP=M30 modalgroup=1 epilog=M30_epilog
REMAP=M02 modalgroup=1 epilog=M02_epilogа вот теперь нуна описать нужные процедуры в файле stdglue.py или в toplevel.py
что-то типа
Код: Выделить всё
def g30_epilog(self,**words):
бла блаиз BASH я дергал напрямую..
Код: Выделить всё
#!/bin/bash
halcmd setp classicladder.0.in-05 True
exit 0Код: Выделить всё
#!/bin/bash
halcmd setp classicladder.0.in-05 False
exit 0как это делается в питоне?
ман на ремап тут
пример ремапа из stdglue.py
Код: Выделить всё
# REMAP=F prolog=setfeed_prolog ngc=setfeed epilog=setfeed_epilog
# exposed parameter: #<feed>
def setfeed_prolog(self,**words):
try:
c = self.blocks[self.remap_level]
if not c.f_flag:
self.set_errormsg("F requires a value")
return INTERP_ERROR
self.params["feed"] = c.f_number
except Exception,e:
self.set_errormsg("F/setfeed_prolog: %s)" % (e))
return INTERP_ERROR
return INTERP_OK
def setfeed_epilog(self,**words):
try:
if not self.value_returned:
r = self.blocks[self.remap_level].executing_remap
self.set_errormsg("the %s remap procedure %s did not return a value"
% (r.name,r.remap_ngc if r.remap_ngc else r.remap_py))
return INTERP_ERROR
if self.blocks[self.remap_level].builtin_used:
pass
#print "---------- F builtin recursion, nothing to do"
else:
self.feed_rate = self.params["feed"]
emccanon.enqueue_SET_FEED_RATE(self.feed_rate)
return INTERP_OK
except Exception,e:
self.set_errormsg("F/setfeed_epilog: %s)" % (e))
return INTERP_ERROR
return INTERP_OK 
