Homing order in configtool.
Adjustments by Traumflug:
- Rebased to current 'experimental'.
- Some whitespace adjustments.
- Renamed labelWidth_homing to labelWidthHoming.
- Fixed an issue in printer.py which would write only the first
character of an option ('x' instead of 'x_positive', 'n'
instead of 'none', etc.)
Thank you very much for the code, Matt!
This commit is contained in:
parent
6d1fa83c0e
commit
732bd470cf
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(x_negative, y_negative, z_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(x_negative, y_negative, z_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -99,7 +99,7 @@
|
||||||
//#define Y_MAX 200.0
|
//#define Y_MAX 200.0
|
||||||
|
|
||||||
//#define Z_MIN 0.0
|
//#define Z_MIN 0.0
|
||||||
//#define Z_MAX 140.0
|
#define Z_MAX 1000
|
||||||
|
|
||||||
/** \def E_ABSOLUTE
|
/** \def E_ABSOLUTE
|
||||||
Some G-code creators produce relative length commands for the extruder,
|
Some G-code creators produce relative length commands for the extruder,
|
||||||
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(z_negative, x_negative, y_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(x_negative, y_negative, z_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(x_negative, y_negative, z_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -75,3 +75,9 @@ defineValueFormat = "#define %-24s %s\n"
|
||||||
defineBoolFormat = "#define %s\n"
|
defineBoolFormat = "#define %s\n"
|
||||||
defineHeaterFormat = "#define HEATER_%s HEATER_%s\n"
|
defineHeaterFormat = "#define HEATER_%s HEATER_%s\n"
|
||||||
defineDCExtruderFormat = "#define %-24s HEATER_%s\n"
|
defineDCExtruderFormat = "#define %-24s HEATER_%s\n"
|
||||||
|
|
||||||
|
reHomingOpts = re.compile("^\s*//\s*#define\s+HOMING_OPT\s+(\w+)")
|
||||||
|
reStartHoming = re.compile("^\s*//\s*DEFINE_HOMING_START")
|
||||||
|
reEndHoming = re.compile("^\s*//\s*DEFINE_HOMING_END")
|
||||||
|
reDefHoming = re.compile("\s*(DEFINE_HOMING\\([^)]*\\))")
|
||||||
|
reHoming4 = re.compile(".*\\(\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*,\s*(\w+)\s*\\)")
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,9 @@ class MechanicalPage(wx.Panel, Page):
|
||||||
|
|
||||||
self.kinematicsKeys = ['KINEMATICS_STRAIGHT', 'KINEMATICS_COREXY']
|
self.kinematicsKeys = ['KINEMATICS_STRAIGHT', 'KINEMATICS_COREXY']
|
||||||
|
|
||||||
|
self.homingKeys = [('HOMING_STEP1', 2), ('HOMING_STEP2', 2),
|
||||||
|
('HOMING_STEP3', 2), ('HOMING_STEP4', 2)]
|
||||||
|
|
||||||
self.labels = {'STEPS_PER_M_X': "X:", 'STEPS_PER_M_Y': "Y:",
|
self.labels = {'STEPS_PER_M_X': "X:", 'STEPS_PER_M_Y': "Y:",
|
||||||
'STEPS_PER_M_Z': "Z:", 'STEPS_PER_M_E' : "E:",
|
'STEPS_PER_M_Z': "Z:", 'STEPS_PER_M_E' : "E:",
|
||||||
'MAXIMUM_FEEDRATE_X': "X:", 'MAXIMUM_FEEDRATE_Y': "Y:",
|
'MAXIMUM_FEEDRATE_X': "X:", 'MAXIMUM_FEEDRATE_Y': "Y:",
|
||||||
|
|
@ -42,9 +45,21 @@ class MechanicalPage(wx.Panel, Page):
|
||||||
'Y_MAX': "Max Y:", 'Z_MIN': "Min Z:", 'Z_MAX': "Max Z:",
|
'Y_MAX': "Max Y:", 'Z_MIN': "Min Z:", 'Z_MAX': "Max Z:",
|
||||||
'E_ABSOLUTE': "Absolute E Coordinates",
|
'E_ABSOLUTE': "Absolute E Coordinates",
|
||||||
'KINEMATICS_STRAIGHT': "Straight",
|
'KINEMATICS_STRAIGHT': "Straight",
|
||||||
'KINEMATICS_COREXY': "CoreXY"}
|
'KINEMATICS_COREXY': "CoreXY",
|
||||||
|
'HOMING_STEP1': "Step 1:",
|
||||||
|
'HOMING_STEP2': "Step 2:",
|
||||||
|
'HOMING_STEP3': "Step 3:",
|
||||||
|
'HOMING_STEP4': "Step 4:",
|
||||||
|
'none': "-",
|
||||||
|
'x_negative': "X min",
|
||||||
|
'x_positive': "X max",
|
||||||
|
'y_negative': "Y min",
|
||||||
|
'y_positive': "Y max",
|
||||||
|
'z_negative': "Z min",
|
||||||
|
'z_positive': "Z max"}
|
||||||
|
|
||||||
labelWidth = 40;
|
labelWidth = 40;
|
||||||
|
labelWidthHoming = 60;
|
||||||
|
|
||||||
sz = wx.GridBagSizer()
|
sz = wx.GridBagSizer()
|
||||||
sz.AddSpacer((10, 10), pos = (0, 0))
|
sz.AddSpacer((10, 10), pos = (0, 0))
|
||||||
|
|
@ -119,11 +134,11 @@ class MechanicalPage(wx.Panel, Page):
|
||||||
sbox.Add(rb, 1, wx.LEFT + wx.RIGHT, 16)
|
sbox.Add(rb, 1, wx.LEFT + wx.RIGHT, 16)
|
||||||
sbox.AddSpacer((5, 5))
|
sbox.AddSpacer((5, 5))
|
||||||
|
|
||||||
vsz.Add(sbox, 1, wx.LEFT, 40)
|
vsz.Add(sbox, 1, wx.LEFT, 10)
|
||||||
|
|
||||||
cb = self.addCheckBox('E_ABSOLUTE', self.onCheckBox)
|
cb = self.addCheckBox('E_ABSOLUTE', self.onCheckBox)
|
||||||
|
|
||||||
vsz.Add(cb, 1, wx.LEFT, 40)
|
vsz.Add(cb, 1, wx.LEFT, 10)
|
||||||
|
|
||||||
sz.Add(vsz, pos = (3, 1))
|
sz.Add(vsz, pos = (3, 1))
|
||||||
|
|
||||||
|
|
@ -145,6 +160,18 @@ class MechanicalPage(wx.Panel, Page):
|
||||||
self.bCalcScrew = b
|
self.bCalcScrew = b
|
||||||
|
|
||||||
sz.Add(bsz, pos = (1, 3))
|
sz.Add(bsz, pos = (1, 3))
|
||||||
|
|
||||||
|
b = wx.StaticBox(self, wx.ID_ANY, "Homing Order")
|
||||||
|
b.SetFont(font)
|
||||||
|
sbox = wx.StaticBoxSizer(b, wx.VERTICAL)
|
||||||
|
sbox.AddSpacer((5, 5))
|
||||||
|
for k, ctype in self.homingKeys:
|
||||||
|
if ctype == 2:
|
||||||
|
tc = self.addChoice(k, [], 0, labelWidthHoming, self.onChoice)
|
||||||
|
sbox.Add(tc)
|
||||||
|
sbox.AddSpacer((5, 5))
|
||||||
|
sz.Add(sbox, pos = (3, 3))
|
||||||
|
|
||||||
self.enableAll(False)
|
self.enableAll(False)
|
||||||
self.SetSizer(sz)
|
self.SetSizer(sz)
|
||||||
|
|
||||||
|
|
@ -181,17 +208,37 @@ class MechanicalPage(wx.Panel, Page):
|
||||||
for k in self.kinematicsKeys:
|
for k in self.kinematicsKeys:
|
||||||
self.radioButtons[k].SetToolTipString(ht['KINEMATICS'])
|
self.radioButtons[k].SetToolTipString(ht['KINEMATICS'])
|
||||||
|
|
||||||
|
def prepareHomingValues(self, name, i, cfgValues):
|
||||||
|
self.choices[name].Clear()
|
||||||
|
for p in cfgValues['HOMING_OPTS']:
|
||||||
|
self.choices[name].Append(self.labels[p])
|
||||||
|
i = cfgValues['HOMING_OPTS'].index(cfgValues[name])
|
||||||
|
self.choices[name].SetSelection(i)
|
||||||
|
|
||||||
def insertValues(self, cfgValues):
|
def insertValues(self, cfgValues):
|
||||||
Page.insertValues(self, cfgValues)
|
Page.insertValues(self, cfgValues)
|
||||||
|
|
||||||
|
self.prepareHomingValues('HOMING_STEP1', 0, cfgValues)
|
||||||
|
self.prepareHomingValues('HOMING_STEP2', 1, cfgValues)
|
||||||
|
self.prepareHomingValues('HOMING_STEP3', 2, cfgValues)
|
||||||
|
self.prepareHomingValues('HOMING_STEP4', 3, cfgValues)
|
||||||
|
|
||||||
for tag in self.kinematicsKeys:
|
for tag in self.kinematicsKeys:
|
||||||
if tag in cfgValues.keys() and cfgValues[tag]:
|
if tag in cfgValues.keys() and cfgValues[tag]:
|
||||||
self.radioButtons[tag].SetValue(True)
|
self.radioButtons[tag].SetValue(True)
|
||||||
|
|
||||||
|
def getHomingValue(self, name, result):
|
||||||
|
return (self.labels.keys()[self.labels.values().index(result[name][0])], True)
|
||||||
|
|
||||||
def getValues(self):
|
def getValues(self):
|
||||||
result = Page.getValues(self)
|
result = Page.getValues(self)
|
||||||
|
|
||||||
for tag in self.kinematicsKeys:
|
for tag in self.kinematicsKeys:
|
||||||
result[tag] = self.radioButtons[tag].GetValue()
|
result[tag] = self.radioButtons[tag].GetValue()
|
||||||
|
|
||||||
|
result['HOMING_STEP1'] = self.getHomingValue('HOMING_STEP1', result)
|
||||||
|
result['HOMING_STEP2'] = self.getHomingValue('HOMING_STEP2', result)
|
||||||
|
result['HOMING_STEP3'] = self.getHomingValue('HOMING_STEP3', result)
|
||||||
|
result['HOMING_STEP4'] = self.getHomingValue('HOMING_STEP4', result)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
|
||||||
|
|
@ -111,6 +111,30 @@
|
||||||
*/
|
*/
|
||||||
#define E_ABSOLUTE
|
#define E_ABSOLUTE
|
||||||
|
|
||||||
|
/** \def HOMING_OPT
|
||||||
|
|
||||||
|
Options for homing movements. 'none' means no movement at all. For each
|
||||||
|
option XXX, a function home_XXX() has to exist, typically in home.c/.h.
|
||||||
|
*/
|
||||||
|
//#define HOMING_OPT none
|
||||||
|
//#define HOMING_OPT x_negative
|
||||||
|
//#define HOMING_OPT x_positive
|
||||||
|
//#define HOMING_OPT y_negative
|
||||||
|
//#define HOMING_OPT y_positive
|
||||||
|
//#define HOMING_OPT z_negative
|
||||||
|
//#define HOMING_OPT z_positive
|
||||||
|
|
||||||
|
/** \def DEFINE_HOMING
|
||||||
|
|
||||||
|
Order (and number) of homing movements.
|
||||||
|
*/
|
||||||
|
#ifndef DEFINE_HOMING
|
||||||
|
#define DEFINE_HOMING(...)
|
||||||
|
#endif
|
||||||
|
//DEFINE_HOMING_START
|
||||||
|
DEFINE_HOMING(x_negative, y_negative, z_negative, none)
|
||||||
|
//DEFINE_HOMING_END
|
||||||
|
|
||||||
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
/** \def ACCELERATION_REPRAP ACCELERATION_RAMPING ACCELERATION_TEMPORAL
|
||||||
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
Choose optionally one of ACCELERATION_REPRAP, ACCELERATION_RAMPING or
|
||||||
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
ACCELERATION_TEMPORAL. With none of them defined, movements are done
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,9 @@ from sys import platform
|
||||||
from configtool.data import (defineValueFormat, defineBoolFormat,
|
from configtool.data import (defineValueFormat, defineBoolFormat,
|
||||||
reHelpTextStart, reHelpTextEnd,
|
reHelpTextStart, reHelpTextEnd,
|
||||||
reDefine, reDefineBL, reDefQS, reDefQSm,
|
reDefine, reDefineBL, reDefQS, reDefQSm,
|
||||||
reDefQSm2, reDefBool, reDefBoolBL)
|
reDefQSm2, reDefBool, reDefBoolBL,
|
||||||
|
reHomingOpts, reStartHoming, reEndHoming,
|
||||||
|
reDefHoming, reHoming4)
|
||||||
|
|
||||||
class Printer:
|
class Printer:
|
||||||
def __init__(self, settings):
|
def __init__(self, settings):
|
||||||
|
|
@ -86,6 +88,12 @@ class Printer:
|
||||||
ln = prevLines + ln
|
ln = prevLines + ln
|
||||||
prevLines = ""
|
prevLines = ""
|
||||||
|
|
||||||
|
if self.parseCandidateValues(ln):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.parseHoming(ln):
|
||||||
|
continue
|
||||||
|
|
||||||
self.parseDefineName(ln)
|
self.parseDefineName(ln)
|
||||||
self.parseDefineValue(ln)
|
self.parseDefineValue(ln)
|
||||||
|
|
||||||
|
|
@ -118,6 +126,12 @@ class Printer:
|
||||||
ln = prevLines + ln
|
ln = prevLines + ln
|
||||||
prevLines = ""
|
prevLines = ""
|
||||||
|
|
||||||
|
if self.parseCandidateValues(ln):
|
||||||
|
continue
|
||||||
|
|
||||||
|
if self.parseHoming(ln):
|
||||||
|
continue
|
||||||
|
|
||||||
self.parseDefineValue(ln)
|
self.parseDefineValue(ln)
|
||||||
|
|
||||||
# Parsing done. All parsed stuff is now in these array and dicts.
|
# Parsing done. All parsed stuff is now in these array and dicts.
|
||||||
|
|
@ -139,6 +153,40 @@ class Printer:
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def parseCandidateValues(self, ln):
|
||||||
|
m = reHomingOpts.match(ln)
|
||||||
|
if m:
|
||||||
|
t = m.groups()
|
||||||
|
if len(t) == 1:
|
||||||
|
if 'HOMING_OPTS' in self.cfgValues:
|
||||||
|
if t[0] not in self.cfgValues['HOMING_OPTS']:
|
||||||
|
self.cfgValues['HOMING_OPTS'].append(t[0])
|
||||||
|
else:
|
||||||
|
self.cfgValues['HOMING_OPTS'] = [t[0]]
|
||||||
|
return True
|
||||||
|
|
||||||
|
def parseHoming(self, ln):
|
||||||
|
m = reDefHoming.search(ln)
|
||||||
|
if m:
|
||||||
|
t = m.groups()
|
||||||
|
if len(t) == 1:
|
||||||
|
n = reHoming4.search(t[0])
|
||||||
|
if n:
|
||||||
|
u = n.groups()
|
||||||
|
if len(u) == 4:
|
||||||
|
t2 = []
|
||||||
|
for x in u:
|
||||||
|
t2.append(x)
|
||||||
|
|
||||||
|
self.cfgValues['HOMING_STEP1'] = t2[0]
|
||||||
|
self.cfgValues['HOMING_STEP2'] = t2[1]
|
||||||
|
self.cfgValues['HOMING_STEP3'] = t2[2]
|
||||||
|
self.cfgValues['HOMING_STEP4'] = t2[3]
|
||||||
|
|
||||||
|
return True
|
||||||
|
return None
|
||||||
|
return True
|
||||||
|
|
||||||
def parseDefineValue(self, ln):
|
def parseDefineValue(self, ln):
|
||||||
m = reDefQS.search(ln)
|
m = reDefQS.search(ln)
|
||||||
if m:
|
if m:
|
||||||
|
|
@ -194,7 +242,27 @@ class Printer:
|
||||||
fp = file(path, 'w')
|
fp = file(path, 'w')
|
||||||
self.configFile = path
|
self.configFile = path
|
||||||
|
|
||||||
|
skipToHomingEnd = False
|
||||||
|
|
||||||
for ln in self.cfgBuffer:
|
for ln in self.cfgBuffer:
|
||||||
|
m = reStartHoming.match(ln)
|
||||||
|
if m:
|
||||||
|
fp.write(ln)
|
||||||
|
sstr = "%s, %s, %s, %s" % ((values['HOMING_STEP1']),
|
||||||
|
(values['HOMING_STEP2']),
|
||||||
|
(values['HOMING_STEP3']),
|
||||||
|
(values['HOMING_STEP4']))
|
||||||
|
fp.write("DEFINE_HOMING(%s)\n" % sstr)
|
||||||
|
skipToHomingEnd = True
|
||||||
|
continue
|
||||||
|
|
||||||
|
if skipToHomingEnd:
|
||||||
|
m = reEndHoming.match(ln)
|
||||||
|
if m:
|
||||||
|
fp.write(ln)
|
||||||
|
skipToHomingEnd = False
|
||||||
|
continue
|
||||||
|
|
||||||
m = reDefine.match(ln)
|
m = reDefine.match(ln)
|
||||||
if m:
|
if m:
|
||||||
t = m.groups()
|
t = m.groups()
|
||||||
|
|
|
||||||
16
home.c
16
home.c
|
|
@ -73,26 +73,20 @@ void set_axis_home_position(enum axis_e n, int8_t dir);
|
||||||
void home() {
|
void home() {
|
||||||
#ifdef DEFINE_HOMING
|
#ifdef DEFINE_HOMING
|
||||||
#undef DEFINE_HOMING
|
#undef DEFINE_HOMING
|
||||||
#define DEFINE_HOMING(first, second, third) \
|
#define DEFINE_HOMING(first, second, third, fourth) \
|
||||||
{ \
|
{ \
|
||||||
home_##first(); \
|
home_##first(); \
|
||||||
home_##second(); \
|
home_##second(); \
|
||||||
home_##third(); \
|
home_##third(); \
|
||||||
|
home_##fourth(); \
|
||||||
};
|
};
|
||||||
#include "config_wrapper.h"
|
#include "config_wrapper.h"
|
||||||
#undef DEFINE_HOMING
|
#undef DEFINE_HOMING
|
||||||
#else
|
|
||||||
home_x_negative();
|
|
||||||
home_x_positive();
|
|
||||||
|
|
||||||
home_y_negative();
|
|
||||||
home_y_positive();
|
|
||||||
|
|
||||||
home_z_negative();
|
|
||||||
home_z_positive();
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void home_none() {
|
||||||
|
}
|
||||||
|
|
||||||
/// find X MIN endstop
|
/// find X MIN endstop
|
||||||
void home_x_negative() {
|
void home_x_negative() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue