Custom M-Code (Python)
- TheBigLebowski
- Offline
- Senior Member
- Posts: 40
- Thank you received: 3
# REMAPPING
# for tool change commands
REMAP=M6 modalgroup=6 prolog=zbotatc_M6_prolog ngc=m400
REMAP=M7 modalgroup=8 argspec=p py=smart_cool_M7
REMAP=M8 modalgroup=8 argspec=p py=smart_cool_M8
REMAP=M9 modalgroup=8 py=smart_cool_M9
#for get user input stuff
REMAP=M10 modalgroup=4 python=m10
REMAP=M11 modalgroup=4 python=m11
REMAP=M12 modalgroup=4 python=m12
# for various GUI functions
REMAP=M600 modalgroup=10 argspec=PQ ngc=m600
REMAP=g30 modalgroup=1 argspec=xyza py=g300
REMAP=m998 modalgroup=5 argspec=xyza py=m998
REMAP=g50 modalgroup=1 py=g500
REMAP=g47 modalgroup=1 argspec=xyZpqRd py=g470
REMAP=g84 modalgroup=1 argspec=rpxyza prolog=cycle_prolog epilog=cycle_epilog py=g840
[PYTHON]
TOPLEVEL= python/toplevel.py
PATH_PREPEND= python
LOG_LEVEL=8
From toplevel
import hal, time
import serial
import sys
import commands
import redis
import emccanon
from interpreter import *
from constants import * #goody bag of values from Tormach
import tormach_file_util
import datetime
import remap
From Remap File
#!/usr/bin/python
import sys
from interpreter import *
from Tkinter import *
list = []
def m10(self, **words):
global list
if not self.task: return INTERP_OK
list.append(self.blocks[self.remap_level].comment)
return INTERP_OK
def done(self, dialog, entries):
for entry in entries:
val = entry[1].get()
if val.isdigit:
self.params[entry[0]] = float(val)
dialog.update()
dialog.destroy()
# Show the entries
def m11(self, **words):
if not self.task: return INTERP_OK
dir(self)
global list
entries = []
row = 1
if not hasattr(sys, 'argv'):
sys.argv = ['']
dialog = Tk()
dialog.title(self.blocks[self.remap_level].comment)
for item in list:
ret = item.split(";")
prompt = ret[0]
if len(ret) == 1:
param = "_" + prompt.replace(" ", "")
else:
param = "_" + ret[1].replace(" ", "")
Label(dialog, text=prompt).grid(row=row)
entry = Entry(dialog)
entry.grid(column=1, row=row)
try:
entry.insert(0, self.params[param])
except:
pass
entries.append((param, entry))
row += 1
Button(dialog, text='OK', command=lambda: done(self, dialog, entries)).grid(row=row, column=0, sticky=W, pady=4)
mainloop()
return INTERP_OK
def m12(self, **words):
global list
list = []
return INTERP_OK
Please Log in or Create an account to join the conversation.
- TheBigLebowski
- Offline
- Senior Member
- Posts: 40
- Thank you received: 3
If anybody sees something else, let me know
Please Log in or Create an account to join the conversation.
Please Log in or Create an account to join the conversation.
- TheBigLebowski
- Offline
- Senior Member
- Posts: 40
- Thank you received: 3
I tried the new code and it did not change anything. I also re-modified the other files just to make sure.
Any suggestions?
Please Log in or Create an account to join the conversation.
Does the error occur when you try to run the remaps, or when you start the config?
Please Log in or Create an account to join the conversation.
- TheBigLebowski
- Offline
- Senior Member
- Posts: 40
- Thank you received: 3
The error comes up when I attempt to run the Gcode through the mdi in Pathpilot, so it is happening somewhere in the remaps.
The last called routine is shown as Remap > (pycall(m11) > TK GUI
So either the List from the previous gcode (pycall(m10)) is being lost, or it cant find the TK file. My guess would be on the former.
To verify I think i can try to bring up the TK GUI without carrying any data to it. If it works that would point towards the previous list info being lost / mishandled.
14:17:58 | pycall(m11):
Traceback (most recent call last):
File "python/remap.py", line 395, in m11
dialog = Tk()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1762, in __init__
baseName = os.path.basename(sys.argv[0])
IndexError: list index out
Please Log in or Create an account to join the conversation.
- Todd Zuercher
- Topic Author
- Offline
- Platinum Member
- Posts: 5007
- Thank you received: 1441
Please Log in or Create an account to join the conversation.
- spacemanspiffee
- Offline
- Junior Member
- Posts: 28
- Thank you received: 1
Any help would be much appreciated.
Please Log in or Create an account to join the conversation.
- TheBigLebowski
- Offline
- Senior Member
- Posts: 40
- Thank you received: 3
Please Log in or Create an account to join the conversation.
Hi are there any news?If your code is part of a remap then you _can_ import emccanon. I have never figured out what the magic is to do it outside of a remap.
So, rather than a custom M-code in the M100-M199 range, you can remap another code of your choice, and then it will (probably) be easier.
Could not find anything about this topic..
Is the emccanon access possible from an other python script (like Python Hal Component)
Best regards,
Thomas
Please Log in or Create an account to join the conversation.