Update how the printing time remaining estimate is calculated. This gives better accurate results as the first part of the print is not added in the estimate, removing the heating and startup-code from the equasion.

master
daid303 2012-10-04 15:01:54 +02:00
parent b6e62387d4
commit 6ebaa35518
3 changed files with 17 additions and 6 deletions

View File

@ -352,13 +352,12 @@ class printWindow(wx.Frame):
status += 'Line: -/%d\n' % (len(self.gcodeList))
else:
printTime = self.machineCom.getPrintTime() / 60
printTimeTotal = printTime * len(self.gcodeList) / self.machineCom.getPrintPos()
printTimeLeft = printTimeTotal - printTime
printTimeLeft = self.machineCom.getPrintTimeRemainingEstimate()
status += 'Line: %d/%d %d%%\n' % (self.machineCom.getPrintPos(), len(self.gcodeList), self.machineCom.getPrintPos() * 100 / len(self.gcodeList))
if self.currentZ > 0:
status += 'Height: %0.1f\n' % (self.currentZ)
status += 'Print time: %02d:%02d\n' % (int(printTime / 60), int(printTime % 60))
if printTime < 1:
if printTimeLeft == None:
status += 'Print time left: Unknown\n'
else:
status += 'Print time left: %02d:%02d\n' % (int(printTimeLeft / 60), int(printTimeLeft % 60))

View File

@ -180,9 +180,9 @@ class simpleModeWindow(configBase.configWindowBase):
put('support', 'None')
#put('machine_center_x', '100')
#put('machine_center_y', '100')
put('retraction_enable', 'True')
put('retraction_enable', 'False')
put('retraction_min_travel', '5.0')
put('retraction_speed', '13.5')
put('retraction_speed', '40.0')
put('retraction_amount', '4.5')
put('retraction_extra', '0.0')
put('travel_speed', '150')

View File

@ -161,6 +161,7 @@ class MachineCom(object):
self._currentZ = -1
self._heatupWaitStartTime = 0
self._heatupWaitTimeLost = 0.0
self._printStartTime100 = None
self.thread = threading.Thread(target=self._monitor)
self.thread.daemon = True
@ -226,7 +227,15 @@ class MachineCom(object):
return self._gcodePos
def getPrintTime(self):
return time.time() - self._printStartTime - self._heatupWaitTimeLost
return time.time() - self._printStartTime
def getPrintTimeRemainingEstimate(self):
if self._printStartTime100 == None or self.getPrintPos() < 200:
return None
printTime = (time.time() - self._printStartTime100) / 60
printTimeTotal = printTime * (len(self._gcodeList) - 100) / (self.getPrintPos() - 100)
printTimeLeft = printTimeTotal - printTime
return printTimeLeft
def getTemp(self):
return self._temp
@ -464,6 +473,8 @@ class MachineCom(object):
if self._gcodePos >= len(self._gcodeList):
self._changeState(self.STATE_OPERATIONAL)
return
if self._gcodePos == 100:
self._printStartTime100 = time.time()
line = self._gcodeList[self._gcodePos]
if type(line) is tuple:
self._printSection = line[1]
@ -498,6 +509,7 @@ class MachineCom(object):
return
self._gcodeList = gcodeList
self._gcodePos = 0
self._printStartTime100 = None
self._printSection = 'CUSTOM'
self._changeState(self.STATE_PRINTING)
self._printStartTime = time.time()