Indentation fixes, start pronterface modification

master
fsantini 2013-03-14 07:35:17 +01:00
parent b335a4cf77
commit 6cf08006c2
2 changed files with 154 additions and 130 deletions

View File

@ -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

View File

@ -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: