status += 'Line: -/%d\n' % (len(self.gcodeList))\r
else:\r
printTime = self.machineCom.getPrintTime() / 60\r
- printTimeTotal = printTime * len(self.gcodeList) / self.machineCom.getPrintPos()\r
- printTimeLeft = printTimeTotal - printTime\r
+ printTimeLeft = self.machineCom.getPrintTimeRemainingEstimate()\r
status += 'Line: %d/%d %d%%\n' % (self.machineCom.getPrintPos(), len(self.gcodeList), self.machineCom.getPrintPos() * 100 / len(self.gcodeList))\r
if self.currentZ > 0:\r
status += 'Height: %0.1f\n' % (self.currentZ)\r
status += 'Print time: %02d:%02d\n' % (int(printTime / 60), int(printTime % 60))\r
- if printTime < 1:\r
+ if printTimeLeft == None:\r
status += 'Print time left: Unknown\n'\r
else:\r
status += 'Print time left: %02d:%02d\n' % (int(printTimeLeft / 60), int(printTimeLeft % 60))\r
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')
self._currentZ = -1
self._heatupWaitStartTime = 0
self._heatupWaitTimeLost = 0.0
+ self._printStartTime100 = None
self.thread = threading.Thread(target=self._monitor)
self.thread.daemon = True
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
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]
return
self._gcodeList = gcodeList
self._gcodePos = 0
+ self._printStartTime100 = None
self._printSection = 'CUSTOM'
self._changeState(self.STATE_PRINTING)
self._printStartTime = time.time()