Merge pull request #21 from QIDITECH/V4.4.19

V4.4.19
This commit is contained in:
CChen616
2024-05-03 09:58:02 +08:00
committed by GitHub
11 changed files with 270 additions and 49 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -35,10 +35,17 @@ gcode:
{% set z = printer.save_variables.variables.z_offset %} {% set z = printer.save_variables.variables.z_offset %}
SET_GCODE_OFFSET Z={z} MOVE=0 SET_GCODE_OFFSET Z={z} MOVE=0
[gcode_macro CLEAR_NOZZLE] [gcode_macro CLEAR_NOZZLE_PLR]
gcode: gcode:
{% set hotendtemp = params.HOTEND|int %} {% set hotendtemp = params.HOTEND|default(250)|int %}
G1 Z60 F600 {% if (printer.gcode_move.position.z ) < 35 %}
G90
G1 Z35 F900
{% else %}
G91
G1 Z5 F900
G90
{% endif %}
G1 X97 F9000 G1 X97 F9000
G1 Y254 F9000 G1 Y254 F9000
@@ -47,6 +54,43 @@ gcode:
G92 E0 G92 E0
G1 E80 F400 G1 E80 F400
M106 S255 M106 S255
G1 X98 F500
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 X85 F2000
G1 X98 F2000
G1 Y240 F9000
[gcode_macro CLEAR_NOZZLE]
gcode:
{% set hotendtemp = params.HOTEND|int %}
{% if (printer.gcode_move.position.z ) < 35 %}
G1 Z35 F900
{% else %}
G91
G1 Z5 F900
G90
{% endif %}
G1 X97 F9000
G1 Y254 F9000
M109 S{hotendtemp}
G92 E0
G1 E80 F400
M106 S255
M400
M106 P2 S0 M106 P2 S0
M104 S0 M104 S0
TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={hotendtemp-30} TEMPERATURE_WAIT SENSOR=extruder MAXIMUM={hotendtemp-30}
@@ -120,7 +164,7 @@ gcode:
CLEAR_NOZZLE HOTEND={hotendtemp} CLEAR_NOZZLE HOTEND={hotendtemp}
M190 S{bedtemp} M190 S{bedtemp}
Z_TILT_ADJUST # Z_TILT_ADJUST
G29 G29
G0 Z50 F600 G0 Z50 F600
G0 X0 Y0 F6000 G0 X0 Y0 F6000
@@ -129,11 +173,21 @@ gcode:
M109 S{hotendtemp} M109 S{hotendtemp}
M204 S10000 M204 S10000
ENABLE_ALL_SENSOR
save_last_file
[gcode_macro ENABLE_ALL_SENSOR]
gcode:
ENABLE_FILAMENT_WIDTH_SENSOR ENABLE_FILAMENT_WIDTH_SENSOR
RESET_FILAMENT_WIDTH_SENSOR RESET_FILAMENT_WIDTH_SENSOR
query_filament_width query_filament_width
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1 SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1
save_last_file
[gcode_macro DISABLE_ALL_SENSOR]
gcode:
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
DISABLE_FILAMENT_WIDTH_SENSOR
[gcode_macro AUTOTUNE_SHAPERS] [gcode_macro AUTOTUNE_SHAPERS]
variable_autotune_shapers: 'ei' variable_autotune_shapers: 'ei'
@@ -149,7 +203,7 @@ gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1 SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0 SET_STEPPER_ENABLE STEPPER=extruder enable=0
[gcode_macro KINEMATIC_POSITION] [gcode_macro DETECT_INTERRUPTION]
gcode: gcode:
{% set was_interrupted = printer.save_variables.variables.was_interrupted %} {% set was_interrupted = printer.save_variables.variables.was_interrupted %}
{% if was_interrupted %} {% if was_interrupted %}
@@ -165,12 +219,12 @@ gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1 SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
BED_MESH_CLEAR BED_MESH_CLEAR
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0
{% set was_interrupted = printer.save_variables.variables.was_interrupted %} # {% set was_interrupted = printer.save_variables.variables.was_interrupted %}
{% if was_interrupted %} # {% if was_interrupted %}
M118 Detected unexpected interruption during the last print. Do you want to resume printing? (Do not move the extruder before resuming.) # M118 Detected unexpected interruption during the last print. Do you want to resume printing? (Do not move the extruder before resuming.)
M118 Yes: RESUME_INTERRUPTED # M118 Yes: RESUME_INTERRUPTED
M118 No: CLEAR_LAST_FILE # M118 No: CLEAR_LAST_FILE
{% endif %} # {% endif %}
[homing_override] [homing_override]
axes:xyz axes:xyz
@@ -214,9 +268,9 @@ gcode:
{% if params.Z is undefined %} {% if params.Z is undefined %}
SET_KINEMATIC_POSITION X=0 SET_KINEMATIC_POSITION X=0
SET_KINEMATIC_POSITION Y=0 SET_KINEMATIC_POSITION Y=0
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-5} SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-10}
G91 G91
G1 Z5 F600 G1 Z7 F600
G1 X10 F2400 G1 X10 F2400
G1 Y10 F2400 G1 Y10 F2400
G4 P2000 G4 P2000
@@ -239,7 +293,7 @@ gcode:
BEEP I=1 DUR=100 BEEP I=1 DUR=100
G1 X10 F1200 G1 X10 F1200
SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-5} SET_KINEMATIC_POSITION Z={printer.toolhead.axis_maximum.z-10}
G90 G90
G1 X120 Y120 F7800 G1 X120 Y120 F7800
@@ -282,8 +336,7 @@ gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1 SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0 SET_STEPPER_ENABLE STEPPER=extruder enable=0
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 DISABLE_ALL_SENSOR
DISABLE_FILAMENT_WIDTH_SENSOR
SET_GCODE_OFFSET Z=0 MOVE=0 SET_GCODE_OFFSET Z=0 MOVE=0
BED_MESH_CLEAR BED_MESH_CLEAR
G31 G31
@@ -321,8 +374,7 @@ gcode:
SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1 SET_STEPPER_ENABLE STEPPER=stepper_z1 enable=1
SET_STEPPER_ENABLE STEPPER=extruder enable=0 SET_STEPPER_ENABLE STEPPER=extruder enable=0
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 DISABLE_ALL_SENSOR
DISABLE_FILAMENT_WIDTH_SENSOR
SET_GCODE_OFFSET Z=0 MOVE=0 SET_GCODE_OFFSET Z=0 MOVE=0
BED_MESH_CLEAR BED_MESH_CLEAR
G31 G31
@@ -345,6 +397,8 @@ gcode:
SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 ; disable filament sensor SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0 ; disable filament sensor
SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume SAVE_GCODE_STATE NAME=PAUSE ; save current print position for resume
BASE_PAUSE ; pause print BASE_PAUSE ; pause print
G92 E0
G1 E-5 F1800
{% if (printer.gcode_move.position.z ) < z %} {% if (printer.gcode_move.position.z ) < z %}
G91 ; relative positioning G91 ; relative positioning
G1 Z{z} F900 ; raise Z up by z hop amount G1 Z{z} F900 ; raise Z up by z hop amount
@@ -554,7 +608,7 @@ gcode:
[gcode_macro M4028] [gcode_macro M4028]
gcode: gcode:
G28 G28
Z_TILT_ADJUST # Z_TILT_ADJUST
G28 G28
get_zoffset get_zoffset
M400 M400
@@ -569,12 +623,16 @@ gcode:
M118 Position init complete M118 Position init complete
CLEAR_NOZZLE HOTEND=240 CLEAR_NOZZLE HOTEND=240
Z_TILT_ADJUST # Z_TILT_ADJUST
G28 G28
get_zoffset get_zoffset
[gcode_macro M4030] [gcode_macro M4030]
gcode: gcode:
REVERSE_HOMING
G91
G1 Z-30
G90
BED_MESH_CLEAR BED_MESH_CLEAR
SET_GCODE_OFFSET Z=0 MOVE=0 SET_GCODE_OFFSET Z=0 MOVE=0
G28 G28
@@ -590,7 +648,7 @@ gcode:
G0 E15 F400 G0 E15 F400
G4 P1000 G4 P1000
G92 E0 G92 E0
G1 E-80 F800 G1 E-90 F800
M400 M400
M118 Unload finish M118 Unload finish
@@ -603,7 +661,7 @@ gcode:
M118 Load finish M118 Load finish
[output_pin sound] [output_pin sound]
pin: U_1:PA13 pin: gpio8
value:0 value:0
[gcode_macro beep_on] [gcode_macro beep_on]

View File

@@ -10,6 +10,8 @@
# modify: delete comments # modify: delete comments
# add time_update macro # add time_update macro
# [bed_mesh] 6,6 ->8,8 # [bed_mesh] 6,6 ->8,8
#V4.4.19 2024-4-16
# modify: add [chamber_fan chamber_fan]
[include timelapse.cfg] [include timelapse.cfg]
[include Adaptive_Mesh.cfg] [include Adaptive_Mesh.cfg]
[include gcode_macro.cfg] [include gcode_macro.cfg]
@@ -180,13 +182,17 @@ microsteps: 128
rotation_distance: 4 rotation_distance: 4
full_steps_per_rotation: 200 full_steps_per_rotation: 200
endstop_pin:probe:z_virtual_endstop #U_1:PC3 for Z-max endstop_pin:probe:z_virtual_endstop #U_1:PC3 for Z-max
endstop_pin_reverse:tmc2209_stepper_z:virtual_endstop
position_endstop:-0.2 position_endstop:-0.2
position_endstop_reverse:248
position_max:248 position_max:248
position_min: -6 position_min: -4
homing_speed: 8 homing_speed: 8
homing_speed_reverse: 8
second_homing_speed: 10 second_homing_speed: 10
homing_retract_dist: 5.0 homing_retract_dist: 5.0
homing_positive_dir:false homing_positive_dir:false
homing_positive_dir_reverse:true
step_pulse_duration:0.0000001 step_pulse_duration:0.0000001
[stepper_z1] [stepper_z1]
@@ -197,6 +203,7 @@ microsteps: 128
rotation_distance: 4 rotation_distance: 4
full_steps_per_rotation: 200 full_steps_per_rotation: 200
step_pulse_duration:0.0000001 step_pulse_duration:0.0000001
endstop_pin_reverse:tmc2209_stepper_z1:virtual_endstop
[z_tilt] [z_tilt]
z_positions: z_positions:
@@ -244,6 +251,8 @@ run_current: 0.6
#hold_current: 0.17 #hold_current: 0.17
interpolate: True interpolate: True
stealthchop_threshold: 9999999999 stealthchop_threshold: 9999999999
diag_pin:^U_1:PC12
driver_SGTHRS:140
[tmc2209 stepper_z1] [tmc2209 stepper_z1]
uart_pin:U_1: PB7 uart_pin:U_1: PB7
@@ -251,6 +260,8 @@ run_current: 0.6
#hold_current: 0.17 #hold_current: 0.17
interpolate: True interpolate: True
stealthchop_threshold: 9999999999 stealthchop_threshold: 9999999999
diag_pin:^U_1:PA13
driver_SGTHRS:140
[heater_bed] [heater_bed]
heater_pin: U_1:PB10 heater_pin: U_1:PB10
@@ -312,15 +323,16 @@ hardware_pwm: false
kick_start_time: 0.100 kick_start_time: 0.100
off_below: 0.0 off_below: 0.0
[heater_fan chamber_fan] [chamber_fan chamber_fan]
pin:U_1:PA4 pin:U_1:PA4
max_power: 1.0 max_power: 1.0
shutdown_speed: 0 shutdown_speed: 0
kick_start_time: 0.5 kick_start_time: 0.5
heater: chamber heater:chamber
heater_temp: 35
fan_speed: 1.0 fan_speed: 1.0
off_below: 0 off_below: 0
idle_timeout:60
idle_speed:1.0
[heater_fan hotend_fan] [heater_fan hotend_fan]
pin:gpio25 pin:gpio25

View File

@@ -255,4 +255,8 @@ void refresh_page_auto_unload();
int get_mks_ethernet(); int get_mks_ethernet();
void set_mks_ethernet(int target); void set_mks_ethernet(int target);
std::string hex_to_utf8(const std::string& hex);
void check_print_interrupted();
#endif #endif

View File

@@ -420,6 +420,15 @@
#define TJC_PAGE_INSTALLING 90 #define TJC_PAGE_INSTALLING 90
#define TJC_PAGE_AUTO_WARNING 91
#define TJC_PAGE_AUTO_WARNING_YES 0x00
#define TJC_PAGE_CALIBRATE_WARNING 92
#define TJC_PAGE_CALIBRATE_WARNING_NEXT 0x00
#define TJC_PAGE_CALIBRATE_WARNING_BACK 0x01
#define TJC_PAGE_RE_PRINTING 93
void parse_cmd_msg_from_tjc_screen(char *cmd); void parse_cmd_msg_from_tjc_screen(char *cmd);
void page_to(int page_id); void page_to(int page_id);
void tjc_event_clicked_handler(int page_id, int widget_id, int type_id); void tjc_event_clicked_handler(int page_id, int widget_id, int type_id);

View File

@@ -240,7 +240,7 @@ int main(int argc, char** argv) {
mks_get_version(); mks_get_version();
sleep(3); sleep(3);
send_cmd_val(tty_fd, "logo.version", "18"); // CLL 检测UI与SOC版本是否匹配4.4.18版本输出标记数字为18 send_cmd_val(tty_fd, "logo.version", "19"); // CLL 检测UI与SOC版本是否匹配4.4.19版本输出标记数字为19
if (find_screen_tft_file == false) { if (find_screen_tft_file == false) {
previous_page_id = TJC_PAGE_LOGO; previous_page_id = TJC_PAGE_LOGO;
if (get_mks_oobe_enabled() == true) { if (get_mks_oobe_enabled() == true) {

View File

@@ -364,6 +364,8 @@ extern std::string thumbnail_path;
extern bool cache_clicked; extern bool cache_clicked;
int unhomed_move_mode = 0; // CLL 用于保存上次按下的移动按钮,当触发需先归位操作时进行移动, 1(x up),2(x down),3(y up),4(y down),5(z up),6(z down)
// CLL 以下变量用于修复gcode响应函数和refresh函数之间的冲突(gcode响应函数需设置变量在refresh_page_show中统一改变页面否则会产生冲突) // CLL 以下变量用于修复gcode响应函数和refresh函数之间的冲突(gcode响应函数需设置变量在refresh_page_show中统一改变页面否则会产生冲突)
bool jump_to_move_pop_1 = false; bool jump_to_move_pop_1 = false;
bool jump_to_move_pop_2 = false; bool jump_to_move_pop_2 = false;
@@ -404,6 +406,42 @@ void refresh_page_show() {
page_to(TJC_PAGE_MOVE_POP_1); page_to(TJC_PAGE_MOVE_POP_1);
} }
if (jump_to_move_pop_2 == true) { if (jump_to_move_pop_2 == true) {
switch (unhomed_move_mode)
{
case 1: // X_UP
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 X10 F3000\nG90\nM84\n"));
break;
case 2: // X_DOWN
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 X-10 F3000\nG90\nM84\n"));
break;
case 3: // Y_UP
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 Y10 F3000\nG90\nM84\n"));
break;
case 4: // Y_DOWN
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 Y-10 F3000\nG90\nM84\n"));
break;
case 5: // Z_UP
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 Z-10 F600\nG90\nM84\n"));
break;
case 6: // Z_DOWN
ep->Send(json_run_a_gcode("SET_KINEMATIC_POSITION Z=150\nSET_KINEMATIC_POSITION X=150\nSET_KINEMATIC_POSITION Y=150\n"));
ep->Send(json_run_a_gcode("G91\nG1 Z10 F600\nG90\nM84\n"));
break;
default:
break;
}
unhomed_move_mode = 0;
jump_to_move_pop_2 = false; jump_to_move_pop_2 = false;
page_to(TJC_PAGE_MOVE_POP_2); page_to(TJC_PAGE_MOVE_POP_2);
} }
@@ -855,6 +893,7 @@ void refresh_page_auto_finish() {
} }
void refresh_page_auto_moving() { void refresh_page_auto_moving() {
send_cmd_txt(tty_fd, "t5", "(" + std::to_string(printer_heater_bed_temperature) + "/" + std::to_string(printer_heater_bed_target) + ")");
if (step_1 == true) { if (step_1 == true) {
send_cmd_picc(tty_fd, "q0", "109"); send_cmd_picc(tty_fd, "q0", "109");
send_cmd_pco(tty_fd, "t1", "65535"); send_cmd_pco(tty_fd, "t1", "65535");
@@ -1491,7 +1530,7 @@ void refresh_page_main() {
// CLL 每次开机发送断电续打 // CLL 每次开机发送断电续打
if (open_reprint_asked == false) { if (open_reprint_asked == false) {
ep->Send(json_run_a_gcode("KINEMATIC_POSITION\n")); check_print_interrupted();
open_reprint_asked = true; open_reprint_asked = true;
} }
} }
@@ -1696,26 +1735,32 @@ void move_home() {
void move_x_decrease() { void move_x_decrease() {
ep->Send(move(AXIS_X, "-" + std::to_string(printer_move_dist), 130)); ep->Send(move(AXIS_X, "-" + std::to_string(printer_move_dist), 130));
unhomed_move_mode = 2;
} }
void move_x_increase() { void move_x_increase() {
ep->Send(move(AXIS_X, "+" + std::to_string(printer_move_dist), 130)); ep->Send(move(AXIS_X, "+" + std::to_string(printer_move_dist), 130));
unhomed_move_mode = 1;
} }
void move_y_decrease() { void move_y_decrease() {
ep->Send(move(AXIS_Y, "-" + std::to_string(printer_move_dist), 130)); ep->Send(move(AXIS_Y, "-" + std::to_string(printer_move_dist), 130));
unhomed_move_mode = 4;
} }
void move_y_increase() { void move_y_increase() {
ep->Send(move(AXIS_Y, "+" + std::to_string(printer_move_dist), 130)); ep->Send(move(AXIS_Y, "+" + std::to_string(printer_move_dist), 130));
unhomed_move_mode = 3;
} }
void move_z_decrease() { void move_z_decrease() {
ep->Send(move(AXIS_Z, "-" + std::to_string(printer_move_dist), 10)); ep->Send(move(AXIS_Z, "-" + std::to_string(printer_move_dist), 10));
unhomed_move_mode = 5;
} }
void move_z_increase() { void move_z_increase() {
ep->Send(move(AXIS_Z, "+" + std::to_string(printer_move_dist), 10)); ep->Send(move(AXIS_Z, "+" + std::to_string(printer_move_dist), 10));
unhomed_move_mode = 6;
} }
bool get_filament_detected() { bool get_filament_detected() {
@@ -2115,7 +2160,7 @@ void go_to_network() {
scan_ssid_and_show(); scan_ssid_and_show();
get_wlan0_status(); get_wlan0_status();
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) { if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
current_connected_ssid_name = status_result.ssid; // 如果已经连接wifi获取wifi的名字 current_connected_ssid_name = hex_to_utf8(status_result.ssid); // 如果已经连接wifi获取wifi的名字
} else if (strcmp(status_result.wpa_state, "INACTIVE")) { } else if (strcmp(status_result.wpa_state, "INACTIVE")) {
current_connected_ssid_name.clear(); // 如果没连接wifi清除掉当前已连接wifi的名字 current_connected_ssid_name.clear(); // 如果没连接wifi清除掉当前已连接wifi的名字
} }
@@ -2143,7 +2188,7 @@ void refresh_page_wifi_list() {
if (0 == page_wifi_current_pages) { if (0 == page_wifi_current_pages) {
if (0 == i) { if (0 == i) {
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) { if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), status_result.ssid); send_cmd_txt(tty_fd, "t" + std::to_string(i+1), hex_to_utf8(status_result.ssid));
} else { } else {
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), page_wifi_ssid_list[i]); send_cmd_txt(tty_fd, "t" + std::to_string(i+1), page_wifi_ssid_list[i]);
} }
@@ -2496,7 +2541,10 @@ void level_mode_printing_print_file() {
} }
void update_finished_tips() { void update_finished_tips() {
page_to(TJC_PAGE_UPDATE_FINISH); // page_to(TJC_PAGE_UPDATE_FINISH);
sleep(5);
system("sync");
system("systemctl restart makerbase-client.service");
} }
bool get_mks_oobe_enabled() { bool get_mks_oobe_enabled() {
@@ -2885,6 +2933,7 @@ void bed_calibrate() {
if (manual_count == 4) { if (manual_count == 4) {
bed_offset = 0; bed_offset = 0;
printer_idle_timeout_state = "Printing"; printer_idle_timeout_state = "Printing";
ep->Send(json_run_a_gcode("ABORT\n"));
ep->Send(json_run_a_gcode("M4030")); ep->Send(json_run_a_gcode("M4030"));
page_to(TJC_PAGE_BED_MOVING); page_to(TJC_PAGE_BED_MOVING);
}else if (manual_count == 3) { }else if (manual_count == 3) {
@@ -3055,7 +3104,7 @@ void print_log() {
system("bash -c 'cp /home/mks/klipper_logs/auto_update.log* /home/mks/gcode_files/sda1/QD_Log/'"); system("bash -c 'cp /home/mks/klipper_logs/auto_update.log* /home/mks/gcode_files/sda1/QD_Log/'");
system("bash -c 'cp /root/frp/frpc.log* /home/mks/gcode_files/sda1/QD_Log/'"); system("bash -c 'cp /root/frp/frpc.log* /home/mks/gcode_files/sda1/QD_Log/'");
system("bash -c 'cp /root/frp/frpc.*.log /home/mks/gcode_files/sda1/QD_Log/'"); system("bash -c 'cp /root/frp/frpc.*.log /home/mks/gcode_files/sda1/QD_Log/'");
system("cp /root/frp/frpc.toml /home/mks/gcode_files/sda1/QD_Log/frpc.toml"); system("cp /root/frp/frpc.toml /home/mks/gcode_files/sda1/QD_Log/server.cfg");
page_to(TJC_PAGE_PRINT_LOG_S); page_to(TJC_PAGE_PRINT_LOG_S);
} }
} }
@@ -3228,16 +3277,15 @@ void go_to_showqr() {
page_to(TJC_PAGE_SHOW_QR); page_to(TJC_PAGE_SHOW_QR);
if (strcmp(status_result.wpa_state, "COMPLETED") == 0 || mks_ethernet) { if (strcmp(status_result.wpa_state, "COMPLETED") == 0 || mks_ethernet) {
if (qr_refreshed == false) { if (qr_refreshed == false) {
send_cmd_cp_close(tty_fd, "cp0");
if (open_qr_refreshed == true || access("/home/mks/qrcode/qrcode.jpg", F_OK) == -1) if (open_qr_refreshed == true || access("/home/mks/qrcode/qrcode.jpg", F_OK) == -1)
qrmessage = run_python_code("python3 /home/mks/qrcode/qrcode_QD.py 176\n"); qrmessage = run_python_code("python3 /home/mks/qrcode/qrcode_QD.py 176\n");
std::cout << "qrmessage:" << qrmessage << std::endl; std::cout << "qrmessage:" << qrmessage << std::endl;
if (qrmessage.find("Missing or invalid") != -1) { if (qrmessage.find("Missing or invalid") != -1) {
send_cmd_txt(tty_fd, "t4", qrmessage); send_cmd_txt(tty_fd, "t4", qrmessage);
send_cmd_vis(tty_fd, "t4", "1"); send_cmd_vis(tty_fd, "t4", "1");
send_cmd_cp_close(tty_fd, "cp0");
} else if (qrmessage.find("No") != -1) { } else if (qrmessage.find("No") != -1) {
send_cmd_vis(tty_fd, "t4", "1"); send_cmd_vis(tty_fd, "t4", "1");
send_cmd_cp_close(tty_fd, "cp0");
} else { } else {
open_qr_refreshed = true; open_qr_refreshed = true;
refresh_files_list_picture("/home/mks/qrcode/qrcode.jpg", 176, 0); refresh_files_list_picture("/home/mks/qrcode/qrcode.jpg", 176, 0);
@@ -3295,7 +3343,12 @@ void update_server(int choice)
{ {
// CLL 连接服务器获取json文件 // CLL 连接服务器获取json文件
if (choice == 0) { if (choice == 0) {
system("curl -s -S -L -o /root/frp/server_list.json http://www.aws.qidi3dprinter.com:5050/downloads/server_list.json"); // system("curl -s -S -L -o /root/frp/server_list.json http://www.aws.qidi3dprinter.com:5050/downloads/server_list.json");
get_mks_selected_server();
std::string server_for_command = selected_server.empty() ? "aws" : selected_server;
std::string command = "curl -s -S -L -o /root/frp/server_list.json http://www." + server_for_command + ".qidi3dprinter.com:5050/downloads/server_list.json";
std::cout << "Executing command: " << command << std::endl;
system(command.c_str());
} else { } else {
qr_refreshed = false; // CLL 当choice不为0时该函数用于切换服务器需要重新刷新二维码 qr_refreshed = false; // CLL 当choice不为0时该函数用于切换服务器需要重新刷新二维码
} }
@@ -3468,7 +3521,7 @@ void check_online_version() {
page_to(TJC_PAGE_SEARCH_SERVER); page_to(TJC_PAGE_SEARCH_SERVER);
if (connection_method == 0) if (connection_method == 0)
return; return;
target_soc_version = run_python_code("python3 /root/auto_update/version_check_Q1.py"); target_soc_version = run_python_code("python3 /root/auto_update/version_check.py");
std::cout << "服务器版本:" << target_soc_version << std::endl; std::cout << "服务器版本:" << target_soc_version << std::endl;
if (target_soc_version.find("0") == 0) { if (target_soc_version.find("0") == 0) {
page_to(TJC_PAGE_UPDATE_MODE); page_to(TJC_PAGE_UPDATE_MODE);
@@ -3520,7 +3573,7 @@ void online_update() {
pthread_t recevice_progress_pthread; pthread_t recevice_progress_pthread;
pthread_create(&recevice_progress_pthread, NULL, recevice_progress_handle, NULL); pthread_create(&recevice_progress_pthread, NULL, recevice_progress_handle, NULL);
system("rm /home/mks/gcode_files/.cache/*\n"); system("rm /home/mks/gcode_files/.cache/*\n");
system("python3 /root/auto_update/download_update_Q1.py\n"); system("python3 /root/auto_update/download_update.py\n");
// page_to(TJC_PAGE_UPDATE_FINISH); // page_to(TJC_PAGE_UPDATE_FINISH);
system("sync\n"); system("sync\n");
system("systemctl restart makerbase-client\n"); system("systemctl restart makerbase-client\n");
@@ -3582,4 +3635,38 @@ void set_mks_ethernet(int target) {
mksini_save(); mksini_save();
mksini_free(); mksini_free();
mks_ethernet = target; mks_ethernet = target;
}
std::string hex_to_utf8(const std::string& hex) {
std::ostringstream utf8;
size_t i = 0;
while (i < hex.size()) {
if (i + 3 < hex.size() && hex[i] == '\\' && hex[i + 1] == 'x') {
std::string hex_byte = hex.substr(i + 2, 2);
int value;
std::istringstream(hex_byte) >> std::hex >> value;
utf8 << static_cast<char>(value);
i += 4;
} else {
utf8 << hex[i++];
}
}
return utf8.str();
}
void check_print_interrupted() {
std::ifstream infile("/home/mks/klipper_config/saved_variables.cfg");
if (!infile) {
std::cerr << "无法打开文件 " << "/home/mks/klipper_config/saved_variables.cfg" << std::endl;
return;
}
std::stringstream buffer;
buffer << infile.rdbuf();
std::string printer_variables = buffer.str();
infile.close();
std::string print_interrupted_status = printer_variables.substr(printer_variables.find("was_interrupted =") + 18, 5);
if (print_interrupted_status != "False") {
ep->Send(json_run_a_gcode("DETECT_INTERRUPTION\n"));
jump_to_resume_print = true;
}
} }

View File

@@ -234,7 +234,7 @@ void parse_gcode_response(nlohmann::json params) {
step_2 = true; step_2 = true;
} }
} else if (params0.find("echo: Detected unexpected interruption during the last print.") != -1 || params0.find("echo: Yes: RESUME_INTERRUPTED") != -1 || params0.find("echo: No: CLEAR_LAST_FILE") != -1) { } else if (params0.find("echo: Detected unexpected interruption during the last print.") != -1 || params0.find("echo: Yes: RESUME_INTERRUPTED") != -1 || params0.find("echo: No: CLEAR_LAST_FILE") != -1) {
jump_to_resume_print = true; // jump_to_resume_print = true;
} }
} }
} }

View File

@@ -416,6 +416,8 @@ void start_update()
system("systemctl stop moonraker.service\n"); system("systemctl stop moonraker.service\n");
system("find /home/mks/gcode_files -maxdepth 1 -type d ! -name sd* -a ! -name '.*' | grep gcode_files/ | xargs rm -rf"); system("find /home/mks/gcode_files -maxdepth 1 -type d ! -name sd* -a ! -name '.*' | grep gcode_files/ | xargs rm -rf");
system("cp /home/mks/gcode_files/sda1/QD_Update/QD_gcode/*.gcode /home/mks/gcode_files; chmod 777 /home/mks/gcode_files/*.gcode; sync"); system("cp /home/mks/gcode_files/sda1/QD_Update/QD_gcode/*.gcode /home/mks/gcode_files; chmod 777 /home/mks/gcode_files/*.gcode; sync");
sleep(3);
system("systemctl restart moonraker.service\n");
} }
// 检测到UI文件 // 检测到UI文件
@@ -435,8 +437,7 @@ void start_update()
if (!factory_mode) { if (!factory_mode) {
command += "mv " + filePath + " " + filePath + ".bak; "; command += "mv " + filePath + " " + filePath + ".bak; ";
} }
command += "sync"; command += "sync";
system(command.c_str()); system(command.c_str());
break; // 每次更新只处理一个UI文件 break; // 每次更新只处理一个UI文件
@@ -460,7 +461,7 @@ void start_update()
{ {
std::string filename = entry->d_name; std::string filename = entry->d_name;
if (filename.rfind(".bak") != std::string::npos) continue; if (filename.rfind(".bak") != std::string::npos) continue;
if (filename.find("QD_Q1_PATCH") == 0 || filename.find("QD_Q1_SOC") == 0 || filename.find("QD_Mate3_SOC") == 0) if (filename.find("QD_Q1_PATCH") == 0 || filename.find("QD_Q1_SOC") == 0 || filename.find("QD_Mates3_SOC") == 0)
{ {
std::string file_path = base_path + filename; std::string file_path = base_path + filename;
std::string command = "mv " + file_path + " " + base_path + "mks.deb; dpkg -i --force-overwrite " + base_path + "mks.deb;"; std::string command = "mv " + file_path + " " + base_path + "mks.deb; dpkg -i --force-overwrite " + base_path + "mks.deb;";
@@ -472,7 +473,6 @@ void start_update()
{ {
new_file_name += ".bak"; new_file_name += ".bak";
} }
command = "mv " + base_path + "mks.deb " + new_file_name + "; sync"; command = "mv " + base_path + "mks.deb " + new_file_name + "; sync";
system(command.c_str()); system(command.c_str());
} }

View File

@@ -104,6 +104,8 @@ extern bool mks_file_parse_finished;
extern int printer_extruder_temperature; extern int printer_extruder_temperature;
extern int printer_extruder_target; extern int printer_extruder_target;
extern int printer_heater_bed_target;
extern std::string printer_webhooks_state; extern std::string printer_webhooks_state;
extern bool printer_ready; extern bool printer_ready;
@@ -642,18 +644,30 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
switch (widget_id) switch (widget_id)
{ {
case TJC_PAGE_ALL_TO_MAIN: case TJC_PAGE_ALL_TO_MAIN:
page_to(TJC_PAGE_MAIN); if (printer_print_stats_state == "printing" || printer_print_stats_state == "paused") {
page_to(TJC_PAGE_PRINTING);
jump_to_print = false;
} else
page_to(TJC_PAGE_MAIN);
break; break;
case TJC_PAGE_ALL_TO_FILE_LIST: case TJC_PAGE_ALL_TO_FILE_LIST:
break; break;
case TJC_PAGE_ALL_TO_ADJUST: case TJC_PAGE_ALL_TO_ADJUST:
go_to_adjust(); if (printer_print_stats_state == "printing" || printer_print_stats_state == "paused") {
page_to(TJC_PAGE_PRINTING);
jump_to_print = false;
} else
go_to_adjust();
break; break;
case TJC_PAGE_ALL_TO_SETTING: case TJC_PAGE_ALL_TO_SETTING:
go_to_setting(); if (printer_print_stats_state == "printing" || printer_print_stats_state == "paused") {
page_to(TJC_PAGE_PRINTING);
jump_to_print = false;
} else
go_to_setting();
break; break;
case TJC_PAGE_PREVIEW_BACK: case TJC_PAGE_PREVIEW_BACK:
@@ -699,6 +713,11 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
break; break;
case TJC_PAGE_PREVIEW_BED_LEVELING: case TJC_PAGE_PREVIEW_BED_LEVELING:
if (printer_print_stats_state == "printing" || printer_print_stats_state == "paused") {
page_to(TJC_PAGE_PRINTING);
jump_to_print = false;
break;
}
if (printer_bed_leveling == true) { if (printer_bed_leveling == true) {
printer_bed_leveling = false; printer_bed_leveling = false;
}else { }else {
@@ -1369,8 +1388,7 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
break; break;
case TJC_PAGE_LEVEL_MODE_BED_CALIBRATION: case TJC_PAGE_LEVEL_MODE_BED_CALIBRATION:
manual_count = 4; page_to(TJC_PAGE_CALIBRATE_WARNING);
bed_calibrate();
break; break;
case TJC_PAGE_LEVEL_MODE_TO_COMMON_SETTING: case TJC_PAGE_LEVEL_MODE_TO_COMMON_SETTING:
@@ -1419,6 +1437,10 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
break; break;
case TJC_PAGE_AUTO_HEATERBED_NEXT: case TJC_PAGE_AUTO_HEATERBED_NEXT:
if (printer_heater_bed_target < 35) {
page_to(TJC_PAGE_AUTO_WARNING);
break;
}
auto_level_button_enabled = true; auto_level_button_enabled = true;
printer_idle_timeout_state = "Printing"; printer_idle_timeout_state = "Printing";
start_auto_level(); start_auto_level();
@@ -2070,7 +2092,7 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
case TJC_PAGE_RESUME_PRINT: case TJC_PAGE_RESUME_PRINT:
switch(widget_id) { switch(widget_id) {
case TJC_PAGE_RESUME_PRINT_YES: case TJC_PAGE_RESUME_PRINT_YES:
page_to(TJC_PAGE_MAIN); page_to(TJC_PAGE_RE_PRINTING);
send_gcode("RESUME_INTERRUPTED\n"); send_gcode("RESUME_INTERRUPTED\n");
break; break;
@@ -2346,6 +2368,35 @@ void tjc_event_clicked_handler(int page_id, int widget_id, int type_id) {
} }
break; break;
case TJC_PAGE_AUTO_WARNING:
switch (widget_id)
{
case TJC_PAGE_AUTO_WARNING_YES:
page_to(TJC_PAGE_AUTO_HEATERBED);
break;
default:
break;
}
break;
case TJC_PAGE_CALIBRATE_WARNING:
switch (widget_id)
{
case TJC_PAGE_CALIBRATE_WARNING_NEXT:
manual_count = 4;
bed_calibrate();
break;
case TJC_PAGE_CALIBRATE_WARNING_BACK:
page_to(TJC_PAGE_LEVEL_MODE);
break;
default:
break;
}
break;
default: default:
break; break;
} }