Indentation fixes, start pronterface modification
parent
b335a4cf77
commit
6cf08006c2
270
GCodeAnalyzer.py
270
GCodeAnalyzer.py
|
@ -33,31 +33,34 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
class GCodeAnalyzer():
|
class GCodeAnalyzer():
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.x = 0
|
self.x = 0
|
||||||
self.y = 0
|
self.y = 0
|
||||||
self.z = 0
|
self.z = 0
|
||||||
self.e = 0
|
self.e = 0
|
||||||
self.emax = 0
|
self.emax = 0
|
||||||
self.f = 1000
|
self.f = 1000
|
||||||
self.lastX = 0
|
self.lastX = 0
|
||||||
self.lastY = 0
|
self.lastY = 0
|
||||||
self.lastZ = 0
|
self.lastZ = 0
|
||||||
self.lastE = 0
|
self.lastE = 0
|
||||||
self.xOffset = 0
|
self.xOffset = 0
|
||||||
self.yOffset = 0
|
self.yOffset = 0
|
||||||
self.zOffset = 0
|
self.zOffset = 0
|
||||||
self.eOffset = 0
|
self.eOffset = 0
|
||||||
self.lastZPrint = 0
|
self.lastZPrint = 0
|
||||||
self.layerZ = 0
|
self.layerZ = 0
|
||||||
self.relative = False
|
self.relative = False
|
||||||
self.eRelative = False
|
self.eRelative = False
|
||||||
self.homeX = 0
|
self.homeX = 0
|
||||||
self.homeY = 0
|
self.homeY = 0
|
||||||
self.homeZ = 0
|
self.homeZ = 0
|
||||||
self.maxX = 150
|
self.maxX = 150
|
||||||
self.maxY = 150
|
self.maxY = 150
|
||||||
self.maxZ = 150
|
self.maxZ = 150
|
||||||
|
self.hasHomeX = False
|
||||||
|
self.hasHomeY = False
|
||||||
|
self.hasHomeZ = False
|
||||||
|
|
||||||
|
|
||||||
# find a code in a gstring line
|
# find a code in a gstring line
|
||||||
|
@ -66,112 +69,129 @@ class GCodeAnalyzer():
|
||||||
m=re.match(pattern, gcode)
|
m=re.match(pattern, gcode)
|
||||||
if m == None:
|
if m == None:
|
||||||
return None
|
return None
|
||||||
else
|
else:
|
||||||
return m.group(1)
|
return m.group(1)
|
||||||
|
|
||||||
def Analyze(self, gcode):
|
def Analyze(self, gcode):
|
||||||
code_g = self.findCode(gcode, "G")
|
code_g = self.findCode(gcode, "G")
|
||||||
code_m = self.findCode(gcode, "M")
|
code_m = self.findCode(gcode, "M")
|
||||||
|
# we have a g_code
|
||||||
|
if code_g != None:
|
||||||
|
code_g = int(code_g)
|
||||||
|
|
||||||
# we have a g_code
|
#get movement codes
|
||||||
if code_g != None:
|
if code_g == 0 or code_g == 1 or code_g == 2 or code_g == 3:
|
||||||
code_g = int(code_g)
|
self.lastX = self.x
|
||||||
|
self.lastY = self.y
|
||||||
|
self.lastZ = self.z
|
||||||
|
self.lastE = self.e
|
||||||
|
eChanged = false;
|
||||||
|
code_f = self.findCode(gcode, "F")
|
||||||
|
if code_f != None:
|
||||||
|
self.f=float(code_f)
|
||||||
|
|
||||||
#get movement codes
|
code_x = self.findCode(gcode, "X")
|
||||||
if code_g == 0 or code_g == 1 or code_g == 2 or code_g == 3:
|
code_y = self.findCode(gcode, "Y")
|
||||||
eChanged = false;
|
code_z = self.findCode(gcode, "Z")
|
||||||
code_f = self.findCode(gcode, "F")
|
code_e = self.findCode(gcode, "E")
|
||||||
if code_f != None:
|
|
||||||
self.f=float(code_f)
|
|
||||||
|
|
||||||
code_x = self.findCode(gcode, "X")
|
if self.relative:
|
||||||
code_y = self.findCode(gcode. "Y")
|
if code_x != None: self.x += float(code_x)
|
||||||
code_z = self.findCode(gcode, "Z")
|
if code_y != None: self.y += float(code_y)
|
||||||
code_e = self.findCode(gcode, "E")
|
if code_z != None: self.z += float(code_z)
|
||||||
|
if code_e != None:
|
||||||
if self.relative:
|
e = float(code_e)
|
||||||
if code_x != None: self.x += float(code_x)
|
if e != 0:
|
||||||
if code_y != None: self.y += float(code_y)
|
eChanged = True
|
||||||
if code_z != None: self.z += float(code_z)
|
self.e += e
|
||||||
if code_e != None:
|
else:
|
||||||
e = float(code_e)
|
#absolute coordinates
|
||||||
if e != 0:
|
if code_x != None: self.x = self.xOffset + float(code_x)
|
||||||
eChanged = True
|
if code_y != None: self.y = self.yOffset + float(code_y)
|
||||||
self.e += e
|
if code_z != None: self.z = self.zOffset + float(code_z)
|
||||||
else:
|
if code_e != None:
|
||||||
#absolute coordinates
|
e = float(code_e)
|
||||||
if code_x != None: self.x = self.xOffset + float(code_x)
|
if self.eRelative:
|
||||||
if code_y != None: self.y = self.yOffset + float(code_y)
|
if e != 0:
|
||||||
if code_z != None: self.z = self.zOffset + float(code_z)
|
eChanged = True
|
||||||
if code_e != None:
|
self.e += e
|
||||||
e = float(code_e)
|
else:
|
||||||
if self.eRelative:
|
# e is absolute. Is it changed?
|
||||||
if e != 0:
|
if self.e != self.eOffset + e:
|
||||||
eChanged = True
|
eChanged = True
|
||||||
self.e += e
|
self.e = self.eOffset + e
|
||||||
else:
|
#Repetier has a bunch of limit-checking code here and time calculations: we are leaving them for now
|
||||||
# e is absolute. Is it changed?
|
elif code_g == 28 or code_g == 161:
|
||||||
if self.e != self.eOffset + e:
|
self.lastX = self.x
|
||||||
eChanged = True
|
self.lastY = self.y
|
||||||
self.e = self.eOffset + e
|
self.lastZ = self.z
|
||||||
#Repetier has a bunch of limit-checking code here and time calculations: we are leaving them for now
|
self.lastE = self.e
|
||||||
|
code_x = self.findCode(gcode, "X")
|
||||||
elif code_g == 28 or code_g == 161:
|
code_y = self.findCode(gcode, "Y")
|
||||||
code_x = self.findCode(gcode, "X")
|
code_z = self.findCode(gcode, "Z")
|
||||||
code_y = self.findCode(gcode, "Y")
|
code_e = self.findCode(gcode, "E")
|
||||||
code_z = self.findCode(gcode, "Z")
|
homeAll = False
|
||||||
code_e = self.findCode(gcode, "E")
|
if code_x == None and code_y == None and code_z == None: homeAll = True
|
||||||
homeAll = False
|
if code_x != None or homeAll:
|
||||||
if code_x == None and code_y == None and code_z == None: homeAll = True
|
self.hasHomeX = True
|
||||||
if code_x != None or homeAll:
|
self.xOffset = 0
|
||||||
self.xOffset = 0
|
self.x = self.homeX
|
||||||
self.x = self.homeX
|
if code_y != None or homeAll:
|
||||||
if code_y != None or homeAll:
|
self.hasHomeY = True
|
||||||
self.yOffset = 0
|
self.yOffset = 0
|
||||||
self.y = self.homeY
|
self.y = self.homeY
|
||||||
if code_z != None or homeAll:
|
if code_z != None or homeAll:
|
||||||
self.zOffset = 0
|
self.hasHomeZ = True
|
||||||
self.z = self.homeZ
|
self.zOffset = 0
|
||||||
if code_e != None:
|
self.z = self.homeZ
|
||||||
self.eOffset = 0
|
if code_e != None:
|
||||||
self.e = 0
|
self.eOffset = 0
|
||||||
elif code_g == 162:
|
self.e = 0
|
||||||
code_x = self.findCode(gcode, "X")
|
elif code_g == 162:
|
||||||
code_y = self.findCode(gcode, "Y")
|
self.lastX = self.x
|
||||||
code_z = self.findCode(gcode, "Z")
|
self.lastY = self.y
|
||||||
homeAll = False
|
self.lastZ = self.z
|
||||||
if code_x == None and code_y == None and code_z == None: homeAll = True
|
self.lastE = self.e
|
||||||
if code_x != None or homeAll:
|
code_x = self.findCode(gcode, "X")
|
||||||
self.xOffset = 0
|
code_y = self.findCode(gcode, "Y")
|
||||||
self.x = self.maxX
|
code_z = self.findCode(gcode, "Z")
|
||||||
if code_y != None or homeAll:
|
homeAll = False
|
||||||
self.yOffset = 0
|
if code_x == None and code_y == None and code_z == None: homeAll = True
|
||||||
self.y = self.maxY
|
if code_x != None or homeAll:
|
||||||
if code_z != None or homeAll:
|
self.hasHomeX = True
|
||||||
self.zOffset = 0
|
self.xOffset = 0
|
||||||
self.z = self.maxZ
|
self.x = self.maxX
|
||||||
elif code_g == 90: self.relative = False
|
if code_y != None or homeAll:
|
||||||
elif code_g == 91: self.relative = True
|
self.hasHomeY = True
|
||||||
elif code_g == 92:
|
self.yOffset = 0
|
||||||
code_x = self.findCode(gcode, "X")
|
self.y = self.maxY
|
||||||
code_y = self.findCode(gcode, "Y")
|
if code_z != None or homeAll:
|
||||||
code_z = self.findCode(gcode, "Z")
|
self.hasHomeZ = True
|
||||||
code_e = self.findCode(gcode, "E")
|
self.zOffset = 0
|
||||||
if code_x != None:
|
self.z = self.maxZ
|
||||||
self.xOffset = self.x - float(code_x)
|
elif code_g == 90: self.relative = False
|
||||||
self.x = self.xOffset
|
elif code_g == 91: self.relative = True
|
||||||
if code_y != None:
|
elif code_g == 92:
|
||||||
self.yOffset = self.y - float(code_y)
|
code_x = self.findCode(gcode, "X")
|
||||||
self.y = self.yOffset
|
code_y = self.findCode(gcode, "Y")
|
||||||
if code_z != None:
|
code_z = self.findCode(gcode, "Z")
|
||||||
self.zOffset = self.z - float(code_z)
|
code_e = self.findCode(gcode, "E")
|
||||||
self.z = self.zOffset
|
if code_x != None:
|
||||||
if code_e != None:
|
self.xOffset = self.x - float(code_x)
|
||||||
self.xOffset = self.e - float(code_e)
|
self.x = self.xOffset
|
||||||
self.e = self.eOffset
|
if code_y != None:
|
||||||
|
self.yOffset = self.y - float(code_y)
|
||||||
|
self.y = self.yOffset
|
||||||
|
if code_z != None:
|
||||||
|
self.zOffset = self.z - float(code_z)
|
||||||
|
self.z = self.zOffset
|
||||||
|
if code_e != None:
|
||||||
|
self.xOffset = self.e - float(code_e)
|
||||||
|
self.e = self.eOffset
|
||||||
#End code_g != None
|
#End code_g != None
|
||||||
if code_m != None:
|
if code_m != None:
|
||||||
code_m = int(code_m)
|
code_m = int(code_m)
|
||||||
if code_m == 82: self.eRelative = False
|
if code_m == 82: self.eRelative = False
|
||||||
elif code_m == 83: self.eRelative = True
|
elif code_m == 83: self.eRelative = True
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,7 @@ from threading import Thread
|
||||||
from select import error as SelectError
|
from select import error as SelectError
|
||||||
import time, getopt, sys
|
import time, getopt, sys
|
||||||
import platform, os
|
import platform, os
|
||||||
|
from GCodeAnalyzer import GCodeAnalyzer
|
||||||
|
|
||||||
def control_ttyhup(port, disable_hup):
|
def control_ttyhup(port, disable_hup):
|
||||||
"""Controls the HUPCL"""
|
"""Controls the HUPCL"""
|
||||||
|
@ -70,6 +71,8 @@ class printcore():
|
||||||
if port is not None and baud is not None:
|
if port is not None and baud is not None:
|
||||||
self.connect(port, baud)
|
self.connect(port, baud)
|
||||||
|
|
||||||
|
self.analyzer = GCodeAnalyzer()
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
"""Disconnects from printer and pauses the print
|
"""Disconnects from printer and pauses the print
|
||||||
"""
|
"""
|
||||||
|
@ -335,6 +338,7 @@ class printcore():
|
||||||
self.sentlines[lineno] = command
|
self.sentlines[lineno] = command
|
||||||
if self.printer:
|
if self.printer:
|
||||||
self.sent.append(command)
|
self.sent.append(command)
|
||||||
|
self.analyzer.Analyze(command) # run the command through the analyzer
|
||||||
if self.loud:
|
if self.loud:
|
||||||
print "SENT: ", command
|
print "SENT: ", command
|
||||||
if self.sendcb:
|
if self.sendcb:
|
||||||
|
|
Loading…
Reference in New Issue