Squashed commit of the following: commit 03d11a16b3edc1f440251420b1105d20872ebdd7 Merge: e052ab095 ba4f343e9 Author: zkk <1007518571@qq.com> Date: Tue Dec 31 17:28:20 2024 +0800 Merge commit 'ba4f343e9430af5538610529dd400f1f954b0078' into release commit ba4f343e9430af5538610529dd400f1f954b0078 Author: ruipeng <1041589370@qq.com> Date: Tue Dec 31 17:25:28 2024 +0800 F430NX:Y驱动细分由128->64 commit e052ab0957f7991a78b90e9974ae07d60d266226 Merge: 25bc7c6d9 b2b98c057 Author: zkk <1007518571@qq.com> Date: Tue Dec 31 15:15:14 2024 +0800 Merge commit 'b2b98c057a7d23f9c8b0aec4c14844f7c24d6bde' into release commit b2b98c057a7d23f9c8b0aec4c14844f7c24d6bde Author: ruipeng <1041589370@qq.com> Date: Tue Dec 31 10:56:18 2024 +0800 F430NX状态灯功能 commit f3cdc1dd75d96f976502946e752e9f7831288469 Author: ruipeng <1041589370@qq.com> Date: Tue Dec 31 10:55:48 2024 +0800 全系支持PRINT_START,PRINT_END宏 commit ecbde51331316e6c454c09d03d93c3337ae17d8a Author: ruipeng <1041589370@qq.com> Date: Tue Dec 31 10:54:11 2024 +0800 F430NX二喷头静音阈值由200->300 commit 40985b8d9a7a8e26fb3c448f0794dab82d866382 Author: ruipeng <1041589370@qq.com> Date: Tue Dec 31 10:53:55 2024 +0800 f430NX增加驱动器散热风扇控制 commit 682e343d6176c1c0764a7befd12d7971374b2b29 Author: ruipeng <1041589370@qq.com> Date: Mon Dec 30 17:27:29 2024 +0800 修复必须回零后才能取消打印的问题 commit e941884b8ec1d5aec058a6fdc2a2aa94f40bf8b5 Author: ruipeng <1041589370@qq.com> Date: Mon Dec 30 16:29:08 2024 +0800 修复F430NX机型Y轴在零位时回零报错的问题 commit e2a9ff2bfe2f9d4971045ce6fbd6f9835cf6475a Author: ruipeng <1041589370@qq.com> Date: Mon Dec 30 13:36:54 2024 +0800 优化F430NX复制、镜像模式,解决坐标超范围问题 commit 4fe4b7f67dc4b09b67dfb930e3bae80a525e164f Author: ruipeng <1041589370@qq.com> Date: Mon Dec 30 13:32:25 2024 +0800 调整F430NX喷头二X电流,由1->1.5 commit f8f7aabbe226d987bea3ba9033569b12eb00f182 Author: zkk <1007518571@qq.com> Date: Fri Dec 27 17:15:17 2024 +0800 关闭F430NX热风校验功能 commit 7f532dc1019ad4ade1992c835b925f162c80ba1a Author: zkk <1007518571@qq.com> Date: Fri Dec 27 17:14:51 2024 +0800 删除旧的设置offset宏定义 commit 34b6971b41e0b6a7bce978901404cec1e80b17a4 Author: ruipeng <1041589370@qq.com> Date: Fri Dec 27 15:29:04 2024 +0800 修复自动切头开关逻辑,优化恢复打印弹窗内容 commit 765bc8dc22cad7f75f2d8d76f0add94dc0ab802a Author: ruipeng <1041589370@qq.com> Date: Thu Dec 26 11:41:34 2024 +0800 优化耗材检测弹窗内容及格式 commit 25bc7c6d9ee89e6cd4e326bb8497faf6a6256fcd Merge: 588ea4402 9b487abec Author: zkk <1007518571@qq.com> Date: Thu Dec 19 16:23:07 2024 +0800 Merge commit '9b487abec3449dea3673618c1a8b9e88f16b4c40' into release commit 9b487abec3449dea3673618c1a8b9e88f16b4c40 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 16:03:04 2024 +0800 F430NX更换为闭环Y电机 commit 641f767175387cacf9820affd616dcdb017590b9 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 10:42:11 2024 +0800 F430NX复制、镜像模式优化 commit ef148604da4f925305939e74cfb0edc7fbd261d1 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 19 10:40:25 2024 +0800 自动切头功能 commit fa74a82184caa6a914a32578b31aeb21f8299c7c Merge: 9307b8957 93efb1abd Author: zkk <1007518571@qq.com> Date: Wed Dec 18 15:53:46 2024 +0800 Merge branch 'develop' of https://server.creatbot.com/Gitea/CreatBot/CreatBotKlipper into develop commit 9307b89570a63040259b457ef7ff8969b394b527 Author: zkk <1007518571@qq.com> Date: Wed Dec 18 15:49:41 2024 +0800 修复重启时候有概率出现温度数值异常的问题 commit 9925c7864471f1f9f7b1e22f45dc4d1421c1245a Author: zkk <1007518571@qq.com> Date: Tue Dec 17 15:55:28 2024 +0800 实现二喷头的偏移值校准功能 commit 93efb1abdea67a732b17351b8c31ae5387eaaf91 Author: ruipeng <1041589370@qq.com> Date: Fri Dec 13 09:55:41 2024 +0800 配置网床调平淡出高度 commit 30b77165a7bdae2cd338c283fbab3c8baa37c694 Author: ruipeng <1041589370@qq.com> Date: Thu Dec 12 14:03:30 2024 +0800 调整F430NX探测舵机角度,由90°->120° commit 588ea4402812b09100b2417b040d7daa2d2fbfaa Merge: 349f8f7a2 9be203c58 Author: zkk <1007518571@qq.com> Date: Thu Dec 12 10:39:56 2024 +0800 Merge commit '9be203c58f7c88e4f6963a1079d2dcfaa5401dde' into release commit 9be203c58f7c88e4f6963a1079d2dcfaa5401dde Author: ruipeng <1041589370@qq.com> Date: Wed Dec 11 15:24:05 2024 +0800 新增D600pro2、D1000的V0版机型 commit 349f8f7a249ac113700eed2b4a234473016d32c0 Merge: e554ddb83 401da556f Author: zkk <1007518571@qq.com> Date: Fri Nov 29 10:21:01 2024 +0800 Merge branch 'develop' into release commit 401da556f58df5e917a379dd54565ef5775f7ed2 Merge: 508378825 52ea64cf8 Author: zkk <1007518571@qq.com> Date: Fri Nov 29 10:12:48 2024 +0800 Merge branch 'develop' of https://server.creatbot.com/Gitea/CreatBot/CreatBotKlipper into develop commit 52ea64cf83535c84c378239b43a7f0a6a362a517 Author: ruipeng <1041589370@qq.com> Date: Thu Nov 28 10:55:09 2024 +0800 修复暂停掉温后,恢复时喷头温度不能恢复的问题 commit 508378825da2881043b88427a6df03230c9f66c0 Author: zkk <1007518571@qq.com> Date: Wed Nov 27 14:47:23 2024 +0800 D1000 z轴最大速度设置成7 commit 41c2cd39275dfecafd85a0cbe504f2f5f1cdeec6 Author: zkk <1007518571@qq.com> Date: Mon Nov 25 17:12:23 2024 +0800 优化热电偶最大报错次数 # Conflicts: # config/CreatBot_D1000/base.cfg # config/CreatBot_D1000_V0/base.cfg # config/CreatBot_D600Pro2/base.cfg resolved by 03d11a16b3edc1f440251420b1105d20872ebdd7 version # config/CreatBot_D600Pro2_V0/base.cfg resolved by 03d11a16b3edc1f440251420b1105d20872ebdd7 version # config/CreatBot_F430NX/base.cfg resolved by 03d11a16b3edc1f440251420b1105d20872ebdd7 version
121 lines
5.1 KiB
Python
121 lines
5.1 KiB
Python
# Virtual SDCard print stat tracking
|
|
#
|
|
# Copyright (C) 2020 Eric Callahan <arksine.code@gmail.com>
|
|
#
|
|
# This file may be distributed under the terms of the GNU GPLv3 license.
|
|
|
|
class PrintStats:
|
|
def __init__(self, config):
|
|
printer = config.get_printer()
|
|
self.gcode_move = printer.load_object(config, 'gcode_move')
|
|
self.reactor = printer.get_reactor()
|
|
self.reset()
|
|
# Register commands
|
|
self.gcode = printer.lookup_object('gcode')
|
|
self.gcode.register_command(
|
|
"SET_PRINT_STATS_INFO", self.cmd_SET_PRINT_STATS_INFO,
|
|
desc=self.cmd_SET_PRINT_STATS_INFO_help)
|
|
def _update_filament_usage(self, eventtime):
|
|
gc_status = self.gcode_move.get_status(eventtime)
|
|
cur_epos = gc_status['position'].e
|
|
self.filament_used += (cur_epos - self.last_epos) \
|
|
/ gc_status['extrude_factor']
|
|
self.last_epos = cur_epos
|
|
def set_current_file(self, filename):
|
|
self.reset()
|
|
self.filename = filename
|
|
def note_start(self):
|
|
curtime = self.reactor.monotonic()
|
|
if self.print_start_time is None:
|
|
self.print_start_time = curtime
|
|
elif self.last_pause_time is not None:
|
|
# Update pause time duration
|
|
pause_duration = curtime - self.last_pause_time
|
|
self.prev_pause_duration += pause_duration
|
|
self.last_pause_time = None
|
|
# Reset last e-position
|
|
gc_status = self.gcode_move.get_status(curtime)
|
|
self.last_epos = gc_status['position'].e
|
|
self.state = "printing"
|
|
self.error_message = ""
|
|
def note_pause(self):
|
|
if self.last_pause_time is None:
|
|
curtime = self.reactor.monotonic()
|
|
self.last_pause_time = curtime
|
|
# update filament usage
|
|
self._update_filament_usage(curtime)
|
|
if self.state != "error":
|
|
self.state = "paused"
|
|
def note_complete(self):
|
|
self._note_finish("complete")
|
|
def note_error(self, message):
|
|
self._note_finish("error", message)
|
|
def note_cancel(self):
|
|
self._note_finish("cancelled")
|
|
def _note_finish(self, state, error_message = ""):
|
|
self.error_message = error_message
|
|
if self.print_start_time is None:
|
|
return
|
|
self.state = state
|
|
eventtime = self.reactor.monotonic()
|
|
self.total_duration = eventtime - self.print_start_time
|
|
if self.filament_used < 0.0000001:
|
|
# No positive extusion detected during print
|
|
self.init_duration = self.total_duration - \
|
|
self.prev_pause_duration
|
|
self.print_start_time = None
|
|
cmd_SET_PRINT_STATS_INFO_help = "Pass slicer info like layer act and " \
|
|
"total to klipper"
|
|
def cmd_SET_PRINT_STATS_INFO(self, gcmd):
|
|
total_layer = gcmd.get_int("TOTAL_LAYER", self.info_total_layer, \
|
|
minval=0)
|
|
current_layer = gcmd.get_int("CURRENT_LAYER", self.info_current_layer, \
|
|
minval=0)
|
|
if total_layer == 0:
|
|
self.info_total_layer = None
|
|
self.info_current_layer = None
|
|
elif total_layer != self.info_total_layer:
|
|
self.info_total_layer = total_layer
|
|
self.info_current_layer = 0
|
|
|
|
if self.info_total_layer is not None and \
|
|
current_layer is not None and \
|
|
current_layer != self.info_current_layer:
|
|
self.info_current_layer = min(current_layer, self.info_total_layer)
|
|
def reset(self):
|
|
self.filename = self.error_message = ""
|
|
self.state = "standby"
|
|
self.prev_pause_duration = self.last_epos = 0.
|
|
self.filament_used = self.total_duration = 0.
|
|
self.print_start_time = self.last_pause_time = None
|
|
self.init_duration = 0.
|
|
self.info_total_layer = None
|
|
self.info_current_layer = None
|
|
def get_status(self, eventtime):
|
|
time_paused = self.prev_pause_duration
|
|
if self.print_start_time is not None:
|
|
if self.last_pause_time is not None:
|
|
# Calculate the total time spent paused during the print
|
|
time_paused += eventtime - self.last_pause_time
|
|
else:
|
|
# Accumulate filament if not paused
|
|
self._update_filament_usage(eventtime)
|
|
self.total_duration = eventtime - self.print_start_time
|
|
if self.filament_used < 0.0000001:
|
|
# Track duration prior to extrusion
|
|
self.init_duration = self.total_duration - time_paused
|
|
print_duration = self.total_duration - self.init_duration - time_paused
|
|
return {
|
|
'filename': self.filename,
|
|
'total_duration': self.total_duration,
|
|
'print_duration': print_duration,
|
|
'filament_used': self.filament_used,
|
|
'state': self.state,
|
|
'message': self.error_message,
|
|
'info': {'total_layer': self.info_total_layer,
|
|
'current_layer': self.info_current_layer}
|
|
}
|
|
|
|
def load_config(config):
|
|
return PrintStats(config)
|