mirror of
https://github.com/QIDITECH/QIDI_Q1_Pro.git
synced 2026-01-30 23:48:43 +03:00
3672 lines
126 KiB
C++
3672 lines
126 KiB
C++
#include <iostream>
|
||
#include <set>
|
||
#include <stack>
|
||
#include <algorithm>
|
||
// #include <boost/algorithm/string.hpp>
|
||
|
||
#include <cstdio>
|
||
#include <memory>
|
||
#include <stdexcept>
|
||
#include <array>
|
||
|
||
#include <math.h>
|
||
|
||
#include <stdio.h>
|
||
#include <stdlib.h>
|
||
#include <sys/types.h>
|
||
#include <sys/stat.h>
|
||
#include <fcntl.h>
|
||
#include <unistd.h>
|
||
#include <string.h>
|
||
|
||
#include <fstream>
|
||
#include <string>
|
||
#include <sstream>
|
||
#include <map>
|
||
|
||
#include "../include/KlippyGcodes.h"
|
||
#include "../include/send_msg.h"
|
||
#include "../include/event.h"
|
||
#include "../include/mks_printer.h"
|
||
#include "../include/mks_file.h"
|
||
#include "../include/mks_update.h"
|
||
#include "../include/mks_wpa_cli.h"
|
||
#include "../include/mks_test.h"
|
||
#include "../include/MakerbaseSerial.h"
|
||
#include "../include/MakerbaseClient.h"
|
||
#include "../include/MakerbaseShell.h"
|
||
#include "../include/MakerbasePanel.h"
|
||
#include "../include/MakerbaseParseIni.h"
|
||
#include "../include/MakerbaseWiFi.h"
|
||
#include "../include/MakerbaseNetwork.h"
|
||
#include "../include/ui.h"
|
||
#include "../include/send_jpg.h"
|
||
|
||
#include <nlohmann/json.hpp>
|
||
|
||
#define DEFAULT_DIR "gcodes/"
|
||
|
||
extern int tty_fd;
|
||
|
||
extern MakerbaseClient *ep;
|
||
|
||
extern bool gimage_is_showed;
|
||
extern bool simage_is_showed;
|
||
|
||
extern int current_page_id; // 当前页面的id号
|
||
extern int previous_page_id; // 上一页面的id号
|
||
extern int next_page_id; // 下一页面的id号
|
||
|
||
/* Printer Extern Varible*/
|
||
extern bool mks_led_status;
|
||
extern bool mks_beep_status;
|
||
extern bool mks_fila_status;
|
||
extern int mks_language_status;
|
||
extern int mks_extruder_target;
|
||
extern int mks_heater_bed_target;
|
||
extern int mks_hot_target;
|
||
extern std::string mks_babystep_value;
|
||
extern std::string mks_adxl_offset;
|
||
extern std::string mks_version_soc;
|
||
extern std::string mks_version_mcu;
|
||
extern std::string mks_version_ui;
|
||
|
||
extern std::string printer_webhooks_state;
|
||
extern std::string printer_webhooks_state_message;
|
||
extern std::string current_webhooks_state_message;
|
||
extern float printer_gcode_move_speed_factor;
|
||
float current_speed_factor = 0;
|
||
extern float printer_gcode_move_speed;
|
||
float current_extruder_factor = 0;
|
||
extern float printer_gcode_move_extrude_factor;
|
||
extern float printer_gcode_move_homing_origin[4]; // [X, Y, Z, E] - 返回应用于每个轴的“gcode 偏移”。例如,可以检查“Z”轴以确定通过“babystepping”应用了多少偏移量。
|
||
extern float printer_gcode_move_position[4];
|
||
extern float printer_gcode_move_gcode_position[4];
|
||
extern std::string printer_toolhead_homed_axes;
|
||
extern float printer_toolhead_print_time;
|
||
extern float printer_toolhead_extimated_print_time;
|
||
extern double printer_toolhead_position[4];
|
||
extern double printer_toolhead_axis_minimum[4];
|
||
extern double printer_toolhead_axis_maximum[4];
|
||
extern double x_position;
|
||
extern double y_position;
|
||
extern double z_position;
|
||
extern float e_position;
|
||
extern double gcode_z_position;
|
||
|
||
extern int printer_extruder_temperature;
|
||
int current_extruder_temperature = 0;
|
||
extern int printer_extruder_target;
|
||
int current_extruder_target = 0;
|
||
extern int printer_heater_bed_temperature;
|
||
int current_heater_bed_temperature = 0;
|
||
extern int printer_heater_bed_target;
|
||
int current_heater_bed_target = 0;
|
||
extern int printer_hot_temperature;
|
||
int current_hot_temperature = 0;
|
||
extern int printer_hot_target;
|
||
int current_hot_target = 0;
|
||
extern float printer_fan_speed;
|
||
extern float printer_heater_fan_speed;
|
||
extern float printer_heater_fan_my_nozzle_fan1_speed;
|
||
extern float printer_out_pin_fan0_value;
|
||
float current_out_pin_fan0_value = 0;
|
||
|
||
extern float printer_out_pin_fan3_value;
|
||
float current_out_pin_fan3_value =0;
|
||
|
||
extern float printer_out_pin_fan2_value;
|
||
float current_out_pin_fan2_value = 0;
|
||
extern float printer_out_pin_beep_value;
|
||
extern std::string printer_idle_timeout_state;
|
||
extern float printer_printing_time;
|
||
extern std::string printer_print_stats_filename;
|
||
extern float printer_print_stats_total_duration;
|
||
extern float printer_print_stats_print_duration;
|
||
extern float printer_print_stats_filament_used;
|
||
extern std::string printer_print_stats_state; // 这个状态很有用
|
||
extern std::string printer_print_stats_message; // error detected, error message
|
||
extern std::string printer_display_status_message;
|
||
extern int printer_display_status_progress;
|
||
|
||
extern float auto_level_dist;
|
||
extern bool auto_level_finished;
|
||
extern bool auto_level_enabled;
|
||
|
||
std::string str_manual_level_offset;
|
||
extern float manual_level_dist;
|
||
extern int manual_level_count;
|
||
extern bool manual_level_finished;
|
||
|
||
extern float printer_bed_mesh_mesh_min[2];
|
||
extern float printer_bed_mesh_mesh_max[2];
|
||
extern float printer_bed_mesh_profiles_mks_points[5][5];
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_tension;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_mesh_x_pps;
|
||
extern std::string printer_bed_mesh_profiles_mks_mesh_params_algo;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_min_x;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_min_y;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_x_count;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_y_count;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_mesh_y_pps;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_max_x;
|
||
extern float printer_bed_mesh_profiles_mks_mesh_params_max_y;
|
||
|
||
extern float page_set_zoffset_x_y_position[16][2];
|
||
|
||
extern float page_set_zoffset_z_position[16];
|
||
|
||
extern bool fresh_page_set_zoffset_data;
|
||
extern bool refresh_page_auto_finish_data;
|
||
extern int page_set_zoffset_index;
|
||
|
||
// filament switch sensor fila
|
||
extern bool filament_switch_sensor_fila_filament_detected;
|
||
extern bool filament_switch_sensor_fila_enabled;
|
||
|
||
extern float printer_caselight_value;
|
||
|
||
extern int printer_pause_taget;
|
||
|
||
extern bool printer_pause_resume_is_paused;
|
||
|
||
extern float printer_set_offset;
|
||
extern float printer_z_offset;
|
||
extern float printer_intern_z_offset;
|
||
extern float printer_extern_z_offset;
|
||
|
||
extern float printer_move_dist;
|
||
extern int printer_filament_extruder_target;
|
||
extern int printer_filament_extruedr_dist;
|
||
|
||
// probe
|
||
extern float printer_probe_x_zoffset;
|
||
extern float printer_probe_y_zoffset;
|
||
extern float printer_probe_z_zoffset;
|
||
|
||
// printer info software version
|
||
extern std::string printer_info_software_version;
|
||
|
||
/* wifi */
|
||
extern std::string page_wifi_ssid_list[5];
|
||
extern int page_wifi_current_pages;
|
||
extern int page_wifi_ssid_list_pages;
|
||
extern std::string get_wifi_name;
|
||
/* 文件列表处理相关变量 */
|
||
// extern std::set<std::string> page_files_dirname_filename_list;
|
||
|
||
extern bool filelist_changed;
|
||
|
||
extern int page_files_pages;
|
||
extern int page_files_current_pages;
|
||
extern int page_files_folder_layers;
|
||
extern std::string page_files_previous_path;
|
||
extern std::string page_files_root_path;
|
||
extern std::string page_files_path;
|
||
|
||
extern std::string page_files_list_name[9]; // 文件列表显示文件名称
|
||
extern std::string page_files_list_show_name[9]; // 文件列表名称
|
||
extern std::string page_files_list_show_type[9]; // 文件类型: [f]或者[d],或者[n]
|
||
|
||
extern std::stack<std::string> page_files_path_stack; // 路径栈
|
||
extern std::string page_files_root_path; // Klippy根目录
|
||
extern std::string page_files_previous_path; // 之前的路径
|
||
extern std::string page_files_path; // 文件所在路径
|
||
extern std::string page_files_print_files_path; // 要打印的文件路径
|
||
|
||
extern int file_metadata_estimated_time;
|
||
extern std::string file_metadata_filename;
|
||
extern float file_metadata_filament_total;
|
||
extern int file_metadata_object_height;
|
||
extern std::string file_metadata_filament_name;
|
||
extern std::string file_metadata_filament_type;
|
||
extern float file_metadata_filament_weight_total;
|
||
extern std::string file_metadata_gimage;
|
||
extern std::string file_metadata_simage;
|
||
|
||
extern int level_mode;
|
||
|
||
extern bool printing_keyboard_enabled;
|
||
// extern bool filament_keyboard_enabled;
|
||
extern bool auto_level_button_enabled;
|
||
extern bool manual_level_button_enabled;
|
||
|
||
extern bool show_preview_complete;
|
||
extern bool show_preview_gimage_completed;
|
||
|
||
/* 补偿值 */
|
||
float page_set_zoffset_number;
|
||
|
||
/* 共振补偿值 */
|
||
std::string page_syntony_shaper_freq_x = "";
|
||
std::string page_syntony_shaper_freq_y = "";
|
||
bool page_syntony_finished = false;
|
||
|
||
/* PID调节 */
|
||
bool page_pid_finished = false;
|
||
|
||
/* wifi */
|
||
extern struct mks_wifi_status_result_t status_result;
|
||
extern struct mks_wifi_status_t wpa_status;
|
||
|
||
std::string wifi_ip_address;
|
||
|
||
/* 打完关机 */
|
||
bool page_printing_shutdown_enable = false;
|
||
|
||
/* wifi键盘打开判断 */
|
||
extern bool printing_wifi_keyboard_enabled;
|
||
|
||
|
||
/* refresh about success*/
|
||
bool page_about_successed = false;
|
||
|
||
extern bool is_download_to_screen; // main.cpp 里面的变量
|
||
|
||
/* update page */
|
||
extern int filesize;
|
||
|
||
/* server history totals */
|
||
extern int total_jobs;
|
||
extern double total_time;
|
||
extern double total_print_time;
|
||
extern double total_filament_used;
|
||
|
||
/* 800个小时 */
|
||
int mks_total_printed_minutes;
|
||
|
||
/* 设置打印调平的目标温度 */
|
||
extern int level_mode_printing_extruder_target;
|
||
extern int level_mode_printing_heater_bed_target;
|
||
|
||
extern bool level_mode_printing_is_printing_level;
|
||
|
||
/* wifi 相关 */
|
||
std::string current_connected_ssid_name = "";
|
||
|
||
extern bool page_wifi_list_ssid_button_enabled[5];
|
||
|
||
// page print filament
|
||
extern bool page_print_filament_extrude_restract_button;
|
||
extern bool page_filament_extrude_button;
|
||
|
||
// oobe开箱引导
|
||
bool mks_oobe_enabled = false;
|
||
bool current_mks_oobe_enabled = false;
|
||
|
||
// 调平
|
||
bool start_pre_auto_level = false;
|
||
bool start_pre_manual_level = false;
|
||
|
||
bool all_level_saving = false;
|
||
|
||
extern bool mks_file_parse_finished;
|
||
// reset
|
||
// extern bool page_reset_to_about;
|
||
|
||
// 正在保存页面
|
||
bool is_refresh_page_saving = false;
|
||
|
||
std::string temp_idle_state = "";
|
||
|
||
// oobe
|
||
extern float oobe_printer_set_offset;
|
||
|
||
//extern std::string printed_file_path;
|
||
|
||
bool jump_to_print = false;
|
||
|
||
int printer_auto_level_heater_bed_target;
|
||
|
||
extern std::string filament_message;
|
||
|
||
bool printer_ready = false;
|
||
|
||
extern bool page_filament_unload_button;
|
||
|
||
extern bool printer_bed_leveling;
|
||
|
||
//4.4.1 CLL 耗材确认弹窗新增不再提示按钮
|
||
extern bool preview_pop_1_on;
|
||
extern bool preview_pop_2_on;
|
||
|
||
//4.4.1 CLL 修复断料检测与退料冲突bug
|
||
bool previous_filament_sensor_state = false;
|
||
|
||
//4.4.1 CLL 修改调平
|
||
std::string previous_zoffset;
|
||
|
||
//4.4.2 CLL 新增息屏功能
|
||
extern bool previous_caselight_value;
|
||
|
||
//4.4.2 CLL 修改调平不再需要设置zoffset值
|
||
bool step_1 = false;
|
||
bool step_2 = false;
|
||
bool step_3 = false;
|
||
bool step_4 = false;
|
||
|
||
//4.4.2 CLL 适配mates和霍尔耗材宽度探测器
|
||
bool filament_detected = true;
|
||
|
||
//4.4.2 CLL 文件列表新增本地、U盘切换按钮
|
||
extern std::string file_mode;
|
||
|
||
extern int manual_count;
|
||
|
||
float bed_offset;
|
||
|
||
extern std::string adjust_mode;
|
||
extern std::string set_mode;
|
||
|
||
extern bool move_fan_setting;
|
||
|
||
extern std::string thumbnail_path;
|
||
|
||
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中统一改变页面,否则会产生冲突)
|
||
bool jump_to_move_pop_1 = false;
|
||
bool jump_to_move_pop_2 = false;
|
||
bool jump_to_detect_error = false;
|
||
bool jump_to_level_error = false;
|
||
bool jump_to_filament_pop_1 = false;
|
||
bool jump_to_print_low_temp = false;
|
||
bool jump_to_memory_warning = false;
|
||
bool jump_to_resume_print = false;
|
||
|
||
std::string error_message;
|
||
|
||
bool main_picture_detected = false; // CLL 此变量用于检测cache中图片是否存在
|
||
bool main_picture_refreshed = false; // CLL 此变量用于标记主页面图片是否已经刷新过,防止反复刷新
|
||
|
||
extern int load_target;
|
||
|
||
int connection_method; // CLL 此变量用于记录二维码是否是局域网刷新 0为局域网连接,1为互联网连接
|
||
|
||
std::map<int, Server_config> serverConfigs;
|
||
std::string selected_server;
|
||
|
||
int current_server_page;
|
||
int total_server_count;
|
||
std::string target_soc_version;
|
||
|
||
bool open_qr_refreshed = false; // CLL 第一次开机刷新时不使用脚本重新生成二维码图片
|
||
extern bool qr_refreshed;
|
||
bool open_reprint_asked = false; // CLL 开机后进入主页面发出检测断电续打指令
|
||
|
||
int mks_ethernet;
|
||
|
||
/* 更新页面处理 */
|
||
void refresh_page_show() {
|
||
// CLL 以下if检测函数为无条件跳转,其在改变为true之前已经经过函数判断(跳转页面前需将对应变量置为false,否则会陷入死循环)
|
||
if (jump_to_move_pop_1 == true) {
|
||
jump_to_move_pop_1 = false;
|
||
page_to(TJC_PAGE_MOVE_POP_1);
|
||
}
|
||
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;
|
||
page_to(TJC_PAGE_MOVE_POP_2);
|
||
}
|
||
if (jump_to_detect_error == true) {
|
||
jump_to_detect_error = false;
|
||
page_to(TJC_PAGE_DETECT_ERROR);
|
||
send_cmd_txt(tty_fd, "t0", error_message);
|
||
}
|
||
if (jump_to_level_error == true) {
|
||
jump_to_level_error = false;
|
||
page_to(TJC_PAGE_LEVEL_ERROR);
|
||
}
|
||
if (jump_to_filament_pop_1 == true) {
|
||
jump_to_filament_pop_1 = false;
|
||
page_to(TJC_PAGE_FILAMENT_POP_1);
|
||
}
|
||
if (jump_to_print_low_temp == true) {
|
||
jump_to_print_low_temp = false;
|
||
page_to(TJC_PAGE_PRINT_LOW_TEMP);
|
||
}
|
||
if (jump_to_resume_print == true) {
|
||
jump_to_resume_print = false;
|
||
page_to(TJC_PAGE_RESUME_PRINT);
|
||
}
|
||
if (jump_to_memory_warning == true) {
|
||
jump_to_memory_warning = false;
|
||
page_to(TJC_PAGE_MEMORY_WARNING);
|
||
}
|
||
|
||
if (current_page_id != TJC_PAGE_PRINTING) {
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_PRINT_ZOFFSET:
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_FILAMENT:
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_STOP:
|
||
case TJC_PAGE_PRINT_NO_FILAMENT:
|
||
case TJC_PAGE_PRINT_NO_FILAMENT_2:
|
||
case TJC_PAGE_SHUTDOWN:
|
||
case TJC_PAGE_PRINT_STOPPING:
|
||
case TJC_PAGE_MOVE_POP_1:
|
||
case TJC_PAGE_GCODE_ERROR:
|
||
case TJC_PAGE_DETECT_ERROR:
|
||
case TJC_PAGE_RESET:
|
||
case TJC_PAGE_PREVIEW:
|
||
case TJC_PAGE_PREVIEW_POP_1:
|
||
case TJC_PAGE_PREVIEW_POP_2:
|
||
case TJC_PAGE_PRINTING_2:
|
||
case TJC_PAGE_FILAMENT_POP_2:
|
||
case TJC_PAGE_FILAMENT_POP_3:
|
||
break;
|
||
|
||
default:
|
||
if (printer_print_stats_state == "printing") {
|
||
if (printer_print_stats_filename != "") {
|
||
main_picture_detected = false;
|
||
main_picture_refreshed = false;
|
||
MKSLOG_BLUE("跳入到打印函数\n");
|
||
sleep(1);
|
||
get_file_estimated_time(printer_print_stats_filename);
|
||
sleep(1);
|
||
//4.4.2 CLL 新增息屏功能
|
||
if (previous_caselight_value == true) {
|
||
led_on_off();
|
||
previous_caselight_value = false;
|
||
}
|
||
jump_to_print = true;
|
||
printer_ready = false;
|
||
page_to(TJC_PAGE_PREVIEW);
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
if (current_page_id != TJC_PAGE_RESET) {
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_GCODE_ERROR:
|
||
case TJC_PAGE_DETECT_ERROR:
|
||
case TJC_PAGE_LEVEL_ERROR:
|
||
case TJC_PAGE_SHUTDOWN:
|
||
case TJC_PAGE_SERVICE:
|
||
case TJC_PAGE_LANGUAGE:
|
||
case TJC_PAGE_COMMON_SETTING:
|
||
case TJC_PAGE_SLEEP_MODE:
|
||
case TJC_PAGE_INTERNET:
|
||
case TJC_PAGE_WIFI_LIST:
|
||
case TJC_PAGE_WIFI_KB:
|
||
case TJC_PAGE_WIFI_CONNECT:
|
||
case TJC_PAGE_WIFI_FAILED:
|
||
case TJC_PAGE_WIFI_SUCCESS:
|
||
case TJC_PAGE_WIFI_SAVING:
|
||
case TJC_PAGE_UPDATE_FOUND:
|
||
case TJC_PAGE_UPDATE_NOT_FOUND:
|
||
case TJC_PAGE_UPDATING:
|
||
case TJC_PAGE_UPDATE_FINISH:
|
||
case TJC_PAGE_RESTORE_CONFIG:
|
||
case TJC_PAGE_SHOW_QR:
|
||
case TJC_PAGE_SERVER_SET:
|
||
case TJC_PAGE_UPDATE_MODE:
|
||
case TJC_PAGE_ONLINE_UPDATE:
|
||
case TJC_PAGE_SEARCH_SERVER:
|
||
break;
|
||
|
||
default:
|
||
// 喷头板断开的情况下跳到重启页面
|
||
if (printer_webhooks_state == "shutdown" || printer_webhooks_state == "error") {
|
||
if (printer_webhooks_state == "shutdown" && (current_page_id == TJC_PAGE_AUTO_MOVING || current_page_id == TJC_PAGE_OPEN_CALIBRATE)) {
|
||
break;
|
||
}
|
||
if (previous_caselight_value == true) {
|
||
led_on_off();
|
||
previous_caselight_value = false;
|
||
}
|
||
page_to(TJC_PAGE_RESET);
|
||
std::cout << "重启页面" << std::endl;
|
||
if (current_webhooks_state_message != printer_webhooks_state_message) {
|
||
current_webhooks_state_message = printer_webhooks_state_message;
|
||
std::string temp = printer_webhooks_state_message;
|
||
replace(temp.begin(), temp.end(), '\n', '.');
|
||
replace(temp.begin(), temp.end(), '\'', ' ');
|
||
replace(temp.begin(), temp.end(), '\"', ' ');
|
||
send_cmd_txt(tty_fd, "t0", temp);
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
} else if (current_page_id == TJC_PAGE_RESET) {
|
||
if (printer_webhooks_state == "shutdown" || printer_webhooks_state == "error") {
|
||
|
||
if (current_webhooks_state_message != printer_webhooks_state_message) {
|
||
current_webhooks_state_message = printer_webhooks_state_message;
|
||
std::string temp = printer_webhooks_state_message;
|
||
replace(temp.begin(), temp.end(), '\n', '.');
|
||
replace(temp.begin(), temp.end(), '\'', ' ');
|
||
replace(temp.begin(), temp.end(), '\"', ' ');
|
||
send_cmd_txt(tty_fd, "t0", temp);
|
||
}
|
||
}
|
||
if (printer_webhooks_state == "ready") {
|
||
page_to(TJC_PAGE_SYS_OK);
|
||
}
|
||
}
|
||
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_MAIN:
|
||
refresh_page_main();
|
||
break;
|
||
|
||
case TJC_PAGE_PREVIEW:
|
||
refresh_page_preview();
|
||
break;
|
||
|
||
case TJC_PAGE_PRINTING:
|
||
case TJC_PAGE_PRINTING_2:
|
||
refresh_page_printing();
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_FILAMENT:
|
||
refresh_page_print_filament();
|
||
break;
|
||
|
||
case TJC_PAGE_MOVE:
|
||
refresh_page_move();
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_ZOFFSET:
|
||
refresh_page_printing_zoffset();
|
||
break;
|
||
|
||
case TJC_PAGE_AUTO_MOVING:
|
||
refresh_page_auto_moving();
|
||
break;
|
||
|
||
case TJC_PAGE_AUTO_FINISH:
|
||
refresh_page_auto_finish();
|
||
break;
|
||
|
||
case TJC_PAGE_SYNTONY_MOVE:
|
||
refresh_page_syntony_move();
|
||
break;
|
||
|
||
case TJC_PAGE_SYNTONY_FINISH:
|
||
// refresh_page_syntony_finish();
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_STOPPING:
|
||
refresh_page_stopping();
|
||
break;
|
||
|
||
case TJC_PAGE_PRE_BED_CALIBRATION:
|
||
refresh_page_auto_level();
|
||
break;
|
||
|
||
case TJC_PAGE_WIFI_LIST:
|
||
refresh_page_wifi_list_2();
|
||
break;
|
||
|
||
case TJC_PAGE_OPEN_FILAMENTVIDEO_2:
|
||
refresh_page_open_filament_video_2();
|
||
break;
|
||
|
||
case TJC_PAGE_ZOFFSET:
|
||
refresh_page_zoffset();
|
||
break;
|
||
|
||
case TJC_PAGE_AUTO_HEATERBED:
|
||
refresh_page_auto_heaterbed();
|
||
break;
|
||
|
||
case TJC_PAGE_OPEN_HEATERBED:
|
||
refresh_page_open_heaterbed();
|
||
break;
|
||
|
||
case TJC_PAGE_FILAMENT_POP_2:
|
||
case TJC_PAGE_FILAMENT_POP_3:
|
||
refresh_page_filament_pop();
|
||
break;
|
||
|
||
case TJC_PAGE_PREVIEW_POP_1:
|
||
case TJC_PAGE_PREVIEW_POP_2:
|
||
refresh_page_preview_pop();
|
||
break;
|
||
|
||
//4.4.2 CLL 文件列表新增本地、U盘切换按钮
|
||
case TJC_PAGE_FILE_LIST:
|
||
// refresh_page_files_list_2();
|
||
break;
|
||
|
||
case TJC_PAGE_BED_MOVING:
|
||
refresh_page_bed_moving();
|
||
break;
|
||
|
||
case TJC_PAGE_OPEN_CALIBRATE:
|
||
refresh_page_open_calibrate();
|
||
break;
|
||
|
||
case TJC_PAGE_COMMON_SETTING:
|
||
refresh_page_common_setting();
|
||
break;
|
||
|
||
case TJC_PAGE_FILAMENT_SET_FAN:
|
||
refresh_page_filament_set_fan();
|
||
break;
|
||
|
||
case TJC_PAGE_WIFI_KB:
|
||
refresh_page_wifi_keyboard();
|
||
break;
|
||
|
||
case TJC_PAGE_FILAMENT:
|
||
refresh_page_filament();
|
||
break;
|
||
|
||
case TJC_PAGE_SHOW_QR:
|
||
refresh_page_show_qr();
|
||
break;
|
||
|
||
case TJC_PAGE_SERVER_SET:
|
||
refresh_page_server_set();
|
||
break;
|
||
|
||
case TJC_PAGE_AUTO_UNLOAD:
|
||
refresh_page_auto_unload();
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void refresh_page_open_filament_video_2() {
|
||
if (printer_extruder_target == 0) {
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
send_cmd_pco(tty_fd, "n0", "65535");
|
||
send_cmd_picc(tty_fd, "b3", "9");
|
||
send_cmd_picc2(tty_fd, "b3", "25");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "t0", "63488");
|
||
send_cmd_pco(tty_fd, "n0", "63488");
|
||
send_cmd_picc(tty_fd, "b3", "10");
|
||
send_cmd_picc2(tty_fd, "b3", "24");
|
||
}
|
||
|
||
send_cmd_txt(tty_fd, "t0", std::to_string(printer_extruder_temperature) + "/");
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_extruder_target));
|
||
}
|
||
|
||
void refresh_page_wifi_keyboard() {
|
||
if (printing_wifi_keyboard_enabled == true) {
|
||
send_cmd_txt(tty_fd, "t0", get_wifi_name);
|
||
}
|
||
}
|
||
|
||
void refresh_page_syntony_finish() {
|
||
MKSLOG_BLUE("Printer ide_timeout state: %s", printer_idle_timeout_state.c_str());
|
||
MKSLOG_BLUE("Printer webhooks state: %s", printer_webhooks_state.c_str());
|
||
if (page_syntony_finished == false) {
|
||
page_syntony_finished = true;
|
||
all_level_saving = false;
|
||
}
|
||
|
||
if (printer_idle_timeout_state == "Ready" && printer_webhooks_state == "ready") {
|
||
MKSLOG_BLUE("Printer webhooks state: %s", printer_webhooks_state.c_str());
|
||
sleep(10);
|
||
system("sync"); // 保存好配置文件
|
||
|
||
all_level_saving = false;
|
||
init_mks_status(); // 重启后初始化之前保存的参数
|
||
sub_object_status();
|
||
get_object_status();
|
||
sleep(10);
|
||
page_to(TJC_PAGE_LEVEL_MODE);
|
||
MKSLOG_RED("从739行跳出去");
|
||
}
|
||
}
|
||
|
||
void refresh_page_auto_level() {
|
||
if (auto_level_dist == (float)0.01) {
|
||
send_cmd_picc(tty_fd, "b0", "113");
|
||
send_cmd_picc(tty_fd, "b1", "114");
|
||
send_cmd_picc(tty_fd, "b2", "114");
|
||
send_cmd_picc(tty_fd, "b3", "114");
|
||
send_cmd_picc2(tty_fd, "b0", "116");
|
||
send_cmd_picc2(tty_fd, "b1", "115");
|
||
send_cmd_picc2(tty_fd, "b2", "115");
|
||
send_cmd_picc2(tty_fd, "b3", "115");
|
||
} else if (auto_level_dist == (float)0.05) {
|
||
send_cmd_picc(tty_fd, "b0", "114");
|
||
send_cmd_picc(tty_fd, "b1", "113");
|
||
send_cmd_picc(tty_fd, "b2", "114");
|
||
send_cmd_picc(tty_fd, "b3", "114");
|
||
send_cmd_picc2(tty_fd, "b0", "115");
|
||
send_cmd_picc2(tty_fd, "b1", "116");
|
||
send_cmd_picc2(tty_fd, "b2", "115");
|
||
send_cmd_picc2(tty_fd, "b3", "115");
|
||
} else if (auto_level_dist == (float)0.1) {
|
||
send_cmd_picc(tty_fd, "b0", "114");
|
||
send_cmd_picc(tty_fd, "b1", "114");
|
||
send_cmd_picc(tty_fd, "b2", "113");
|
||
send_cmd_picc(tty_fd, "b3", "114");
|
||
send_cmd_picc2(tty_fd, "b0", "115");
|
||
send_cmd_picc2(tty_fd, "b1", "115");
|
||
send_cmd_picc2(tty_fd, "b2", "116");
|
||
send_cmd_picc2(tty_fd, "b3", "115");
|
||
} else if (auto_level_dist == (float)0.5) {
|
||
send_cmd_picc(tty_fd, "b0", "114");
|
||
send_cmd_picc(tty_fd, "b1", "114");
|
||
send_cmd_picc(tty_fd, "b2", "114");
|
||
send_cmd_picc(tty_fd, "b3", "113");
|
||
send_cmd_picc2(tty_fd, "b0", "115");
|
||
send_cmd_picc2(tty_fd, "b1", "115");
|
||
send_cmd_picc2(tty_fd, "b2", "115");
|
||
send_cmd_picc2(tty_fd, "b3", "116");
|
||
}
|
||
}
|
||
|
||
void refresh_page_stopping() {
|
||
MKSLOG_BLUE("Printer ide_timeout state: %s", printer_idle_timeout_state.c_str());
|
||
MKSLOG_BLUE("Printer webhooks state: %s", printer_webhooks_state.c_str());
|
||
if (printer_idle_timeout_state == "Ready") {
|
||
clear_previous_data();
|
||
sleep(5);
|
||
save_current_zoffset();
|
||
page_to(TJC_PAGE_MAIN);
|
||
}
|
||
}
|
||
|
||
void refresh_page_syntony_move() {
|
||
if (temp_idle_state != printer_idle_timeout_state) {
|
||
temp_idle_state = printer_idle_timeout_state;
|
||
MKSLOG_BLUE("Printer ide_timeout state: %s", printer_idle_timeout_state.c_str());
|
||
MKSLOG_BLUE("Printer webhooks state: %s", printer_webhooks_state.c_str());
|
||
}
|
||
|
||
if (step_1 == true) {
|
||
sleep(15);
|
||
page_to(TJC_PAGE_SYNTONY_FINISH);
|
||
step_1 = false;
|
||
}
|
||
}
|
||
|
||
void refresh_page_print_filament() {
|
||
send_cmd_txt(tty_fd, "t5", printer_print_stats_filename.substr(printer_print_stats_filename.rfind("/") +1 ));
|
||
|
||
if (printer_extruder_target == 0) {
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
send_cmd_picc(tty_fd, "b0", "63");
|
||
send_cmd_picc2(tty_fd, "b0", "64");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "t2", "63488");
|
||
send_cmd_picc(tty_fd, "b0", "62");
|
||
send_cmd_picc2(tty_fd, "b0", "65");
|
||
}
|
||
|
||
send_cmd_val(tty_fd, "j0", std::to_string(printer_display_status_progress));
|
||
send_cmd_val(tty_fd, "n7", std::to_string(printer_display_status_progress));
|
||
send_cmd_txt(tty_fd, "t2", std::to_string(printer_extruder_temperature));
|
||
send_cmd_txt(tty_fd, "t3", std::to_string(printer_extruder_target));
|
||
send_cmd_txt(tty_fd, "t0", show_time((int)(printer_print_stats_print_duration)));
|
||
send_cmd_txt(tty_fd, "t1", show_time(get_cal_printing_time((int)(printer_print_stats_print_duration), file_metadata_estimated_time, printer_display_status_progress)));
|
||
|
||
if (printer_print_stats_state == "paused") {
|
||
printer_ready = true;
|
||
}
|
||
|
||
//4.4.2 CLL 适配mates和霍尔耗材宽度检测器
|
||
if (filament_detected == false) {
|
||
sleep(1);
|
||
printer_ready = false;
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT);
|
||
}
|
||
|
||
if (printer_print_stats_state == "printing") {
|
||
if (printer_ready == true) {
|
||
printer_ready = false;
|
||
page_to(TJC_PAGE_PRINTING);
|
||
}
|
||
}
|
||
|
||
if (printer_print_stats_state == "standby") {
|
||
page_to(TJC_PAGE_PRINT_STOPPING);
|
||
}
|
||
|
||
if (printer_print_stats_state == "error") {
|
||
page_to(TJC_PAGE_GCODE_ERROR);
|
||
cancel_print();
|
||
clear_previous_data();
|
||
send_cmd_txt(tty_fd, "t0", "gcode error:" + error_message);
|
||
}
|
||
|
||
//4.4.2 CLL 长时间暂停使打印停止后会跳转页面
|
||
if (printer_idle_timeout_state == "Idle") {
|
||
ep->Send(json_run_a_gcode("G28\n"));
|
||
cancel_print();
|
||
}
|
||
}
|
||
|
||
void refresh_page_auto_finish() {
|
||
if ( printer_idle_timeout_state == "Idle" && printer_webhooks_state == "ready" ) {
|
||
auto_level_finished = true;
|
||
}
|
||
}
|
||
|
||
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) {
|
||
send_cmd_picc(tty_fd, "q0", "109");
|
||
send_cmd_pco(tty_fd, "t1", "65535");
|
||
send_cmd_pco(tty_fd, "t0", "38066");
|
||
send_cmd_vis(tty_fd, "gm1", "0");
|
||
send_cmd_vis(tty_fd, "gm2", "1");
|
||
step_1 = false;
|
||
}
|
||
if (step_2 == true) {
|
||
send_cmd_picc(tty_fd, "q0", "110");
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
send_cmd_pco(tty_fd, "t1", "38066");
|
||
send_cmd_vis(tty_fd, "gm2", "0");
|
||
send_cmd_vis(tty_fd, "gm3", "1");
|
||
step_2 = false;
|
||
}
|
||
if (step_3 == true) {
|
||
send_cmd_picc(tty_fd, "q0", "111");
|
||
send_cmd_pco(tty_fd, "t3", "65535");
|
||
send_cmd_pco(tty_fd, "t2", "38066");
|
||
send_cmd_vis(tty_fd, "gm3", "0");
|
||
send_cmd_vis(tty_fd, "gm4", "1");
|
||
step_3 = false;
|
||
printer_idle_timeout_state = "Printing";
|
||
get_mks_heater_bed_target();
|
||
set_heater_bed_target(mks_heater_bed_target);
|
||
ep->Send(json_run_a_gcode("M190 S" + std::to_string(mks_heater_bed_target) + "\n"));
|
||
sleep(1);
|
||
ep->Send(json_run_a_gcode("M4027\n"));
|
||
}
|
||
if (step_4 == true) {
|
||
sleep(15);
|
||
page_to(TJC_PAGE_AUTO_FINISH);
|
||
step_4 = false;
|
||
}
|
||
}
|
||
|
||
void refresh_page_move() {
|
||
std::string x_pos = std::to_string(x_position);
|
||
x_pos = x_pos.substr(0, x_pos.find(".") + 2);
|
||
std::string y_pos = std::to_string(y_position);
|
||
y_pos = y_pos.substr(0, y_pos.find(".") + 2);
|
||
std::string z_pos = std::to_string(z_position);
|
||
z_pos = z_pos.substr(0, z_pos.find(".") + 2);
|
||
|
||
send_cmd_txt(tty_fd, "t0", x_pos);
|
||
send_cmd_txt(tty_fd, "t1", y_pos);
|
||
send_cmd_txt(tty_fd, "t2", z_pos);
|
||
|
||
// CLL 刷新所选择距离
|
||
if (printer_move_dist == (float)0.1) {
|
||
send_cmd_picc(tty_fd, "b0", "77");
|
||
send_cmd_picc2(tty_fd, "b0", "74");
|
||
send_cmd_picc(tty_fd, "b1", "76");
|
||
send_cmd_picc2(tty_fd, "b1", "75");
|
||
send_cmd_picc(tty_fd, "b2", "76");
|
||
send_cmd_picc2(tty_fd, "b2", "75");
|
||
} else if (printer_move_dist == (float)1.0) {
|
||
send_cmd_picc(tty_fd, "b0", "76");
|
||
send_cmd_picc2(tty_fd, "b0", "75");
|
||
send_cmd_picc(tty_fd, "b1", "77");
|
||
send_cmd_picc2(tty_fd, "b1", "74");
|
||
send_cmd_picc(tty_fd, "b2", "76");
|
||
send_cmd_picc2(tty_fd, "b2", "75");
|
||
} else if (printer_move_dist == (float)10) {
|
||
send_cmd_picc(tty_fd, "b0", "76");
|
||
send_cmd_picc2(tty_fd, "b0", "75");
|
||
send_cmd_picc(tty_fd, "b1", "76");
|
||
send_cmd_picc2(tty_fd, "b1", "75");
|
||
send_cmd_picc(tty_fd, "b2", "77");
|
||
send_cmd_picc2(tty_fd, "b2", "74");
|
||
}
|
||
|
||
}
|
||
|
||
void refresh_page_offset(float intern_zoffset) {
|
||
printer_intern_z_offset = intern_zoffset;
|
||
printer_z_offset = printer_intern_z_offset + printer_extern_z_offset;
|
||
}
|
||
|
||
void refresh_page_printing_zoffset() {
|
||
std::string z_offset = std::to_string(printer_gcode_move_homing_origin[2]);
|
||
std::string show_gcode_z = std::to_string(gcode_z_position);
|
||
z_offset = z_offset.substr(0, z_offset.find(".") + 4);
|
||
show_gcode_z = show_gcode_z.substr(0, show_gcode_z.find(".") + 4);
|
||
send_cmd_txt(tty_fd, "t4", printer_print_stats_filename.substr(printer_print_stats_filename.rfind("/") +1 ));
|
||
if (z_offset != mks_babystep_value) {
|
||
mks_babystep_value = z_offset;
|
||
set_mks_babystep(mks_babystep_value);
|
||
}
|
||
send_cmd_txt(tty_fd, "t2", show_gcode_z);
|
||
send_cmd_txt(tty_fd, "t3", z_offset);
|
||
send_cmd_txt(tty_fd, "t0", show_time((int)(printer_print_stats_print_duration)));
|
||
send_cmd_val(tty_fd, "n7", std::to_string(printer_display_status_progress));
|
||
send_cmd_txt(tty_fd, "t1", show_time(get_cal_printing_time((int)(printer_print_stats_print_duration), file_metadata_estimated_time, printer_display_status_progress)));
|
||
send_cmd_val(tty_fd, "j0", std::to_string(printer_display_status_progress));
|
||
|
||
if (printer_set_offset == (float)0.01) {
|
||
send_cmd_picc(tty_fd, "b1", std::to_string(57));
|
||
send_cmd_picc2(tty_fd, "b1", std::to_string(60));
|
||
send_cmd_picc(tty_fd, "b2", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b2", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b3", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b3", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b4", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b4", std::to_string(59));
|
||
} else if (printer_set_offset == (float)0.05) {
|
||
send_cmd_picc(tty_fd, "b1", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b1", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b2", std::to_string(57));
|
||
send_cmd_picc2(tty_fd, "b2", std::to_string(60));
|
||
send_cmd_picc(tty_fd, "b3", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b3", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b4", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b4", std::to_string(59));
|
||
} else if (printer_set_offset == (float)0.1) {
|
||
send_cmd_picc(tty_fd, "b1", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b1", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b2", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b2", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b3", std::to_string(57));
|
||
send_cmd_picc2(tty_fd, "b3", std::to_string(60));
|
||
send_cmd_picc(tty_fd, "b4", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b4", std::to_string(59));
|
||
} else if (printer_set_offset == (float)0.5) {
|
||
send_cmd_picc(tty_fd, "b1", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b1", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b2", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b2", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b3", std::to_string(58));
|
||
send_cmd_picc2(tty_fd, "b3", std::to_string(59));
|
||
send_cmd_picc(tty_fd, "b4", std::to_string(57));
|
||
send_cmd_picc2(tty_fd, "b4", std::to_string(60));
|
||
}
|
||
|
||
if (printer_print_stats_state == "printing") {
|
||
printer_ready = true;
|
||
}
|
||
|
||
if (filament_switch_sensor_fila_enabled == true) {
|
||
if (filament_switch_sensor_fila_filament_detected == false) {
|
||
printer_ready = false;
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT_2);
|
||
}
|
||
}
|
||
|
||
//4.4.2 CLL 适配mates与霍尔耗材宽度检测器
|
||
if (filament_detected == false) {
|
||
sleep(1);
|
||
printer_ready = false;
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT);
|
||
}
|
||
|
||
if (printer_print_stats_state == "standby") {
|
||
page_to(TJC_PAGE_PRINT_STOPPING);
|
||
}
|
||
|
||
if (printer_print_stats_state == "paused") {
|
||
if (printer_ready == true) {
|
||
printer_ready = false;
|
||
page_to(TJC_PAGE_PRINT_FILAMENT);
|
||
}
|
||
}
|
||
|
||
if (printer_print_stats_state == "complete") {
|
||
std::string time_duration = show_time((int)(printer_print_stats_print_duration));
|
||
complete_print();
|
||
clear_previous_data();
|
||
sleep(5);
|
||
save_current_zoffset();
|
||
page_to(TJC_PAGE_PRINT_FINISH);
|
||
send_cmd_txt(tty_fd, "t1", time_duration);
|
||
}
|
||
|
||
if (printer_print_stats_state == "error") {
|
||
page_to(TJC_PAGE_GCODE_ERROR);
|
||
cancel_print();
|
||
clear_previous_data();
|
||
send_cmd_txt(tty_fd , "t0", "gcode error:" + error_message);
|
||
}
|
||
}
|
||
|
||
void refresh_page_printing() {
|
||
std::string z_offset = std::to_string(printer_gcode_move_homing_origin[2]);
|
||
z_offset = z_offset.substr(0, z_offset.find(".") + 4);
|
||
|
||
send_cmd_val(tty_fd, "j0", std::to_string(printer_display_status_progress));
|
||
send_cmd_val(tty_fd, "n7", std::to_string(printer_display_status_progress));
|
||
send_cmd_txt(tty_fd, "t2", show_time((int)(printer_print_stats_print_duration)));
|
||
send_cmd_txt(tty_fd, "t3", show_time(get_cal_printing_time((int)(printer_print_stats_print_duration), file_metadata_estimated_time, printer_display_status_progress)));
|
||
send_cmd_txt(tty_fd, "t4", printer_print_stats_filename.substr(printer_print_stats_filename.rfind("/") +1 ));
|
||
|
||
if (printing_keyboard_enabled == false) { // CLL 当未进入键盘时重复执行刷新函数
|
||
if (current_page_id == TJC_PAGE_PRINTING) {
|
||
// CLL 刷新风扇速率
|
||
send_cmd_val(tty_fd, "n4", std::to_string((int)(printer_out_pin_fan0_value * 100)));
|
||
send_cmd_val(tty_fd, "n5", std::to_string((int)(printer_out_pin_fan2_value * 100)));
|
||
send_cmd_val(tty_fd, "n6", std::to_string((int)(printer_out_pin_fan3_value * 100)));
|
||
|
||
send_cmd_txt(tty_fd, "t0", std::to_string(printer_extruder_temperature));
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_extruder_target));
|
||
if (printer_extruder_target == 0) { // CLL 根据喷头是否加热改变按钮和数字颜色
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
send_cmd_picc(tty_fd, "b0", "53");
|
||
send_cmd_picc2(tty_fd, "b0", "51");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "t0", "63488");
|
||
send_cmd_picc(tty_fd, "b0", "54");
|
||
send_cmd_picc2(tty_fd, "b0", "52");
|
||
}
|
||
|
||
send_cmd_txt(tty_fd, "t1", std::to_string(printer_heater_bed_temperature));
|
||
send_cmd_val(tty_fd, "n1", std::to_string(printer_heater_bed_target));
|
||
if (printer_heater_bed_target == 0) { // CLL 根据热床是否加热改变按钮和数字颜色
|
||
send_cmd_pco(tty_fd, "t1", "65535");
|
||
send_cmd_picc(tty_fd, "b1", "53");
|
||
send_cmd_picc2(tty_fd, "b1", "51");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "t1", "63488");
|
||
send_cmd_picc(tty_fd, "b1", "54");
|
||
send_cmd_picc2(tty_fd, "b1", "52");
|
||
}
|
||
|
||
if (printer_caselight_value == 0) { // CLL 判断当前LED状态
|
||
send_cmd_picc(tty_fd, "b3", "53");
|
||
send_cmd_picc2(tty_fd, "b3", "52");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b3", "54");
|
||
send_cmd_picc2(tty_fd, "b3", "51");
|
||
}
|
||
|
||
send_cmd_val(tty_fd, "n2", std::to_string(printer_hot_target)); // CLL 获取热腔温度
|
||
send_cmd_txt(tty_fd, "t5", std::to_string(printer_hot_temperature));
|
||
if (printer_hot_target == 0) { // CLL 根据热床是否加热改变按钮和数字颜色
|
||
send_cmd_pco(tty_fd, "t5", "65535");
|
||
send_cmd_picc(tty_fd, "b7", "53");
|
||
send_cmd_picc2(tty_fd, "b7", "51");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "t5", "63488");
|
||
send_cmd_picc(tty_fd, "b7", "54");
|
||
send_cmd_picc2(tty_fd, "b7", "52");
|
||
}
|
||
|
||
if (show_preview_gimage_completed == true) {
|
||
send_cmd_vis(tty_fd, "cp0", "1");
|
||
send_cmd_val(tty_fd, "v999", "1");
|
||
} else {
|
||
send_cmd_vis(tty_fd, "cp0", "0");
|
||
send_cmd_val(tty_fd, "v999", "0");
|
||
}
|
||
} else if (current_page_id == TJC_PAGE_PRINTING_2) {
|
||
send_cmd_txt(tty_fd, "t1", z_offset); //刷新zoffset值
|
||
|
||
if (current_speed_factor != printer_gcode_move_speed_factor) { // CLL 刷新移动速率
|
||
current_speed_factor = printer_gcode_move_speed_factor;
|
||
send_cmd_val(tty_fd, "n2", std::to_string((int)(round(printer_gcode_move_speed_factor * 100))));
|
||
}
|
||
|
||
if (current_extruder_factor != printer_gcode_move_extrude_factor) { // CLL 刷新挤出速率
|
||
current_extruder_factor = printer_gcode_move_extrude_factor;
|
||
send_cmd_val(tty_fd, "n3", std::to_string((int)(round(printer_gcode_move_extrude_factor * 100))));
|
||
}
|
||
}
|
||
}
|
||
|
||
if (printer_print_stats_state == "printing") {
|
||
printer_ready = true;
|
||
}
|
||
|
||
if (filament_switch_sensor_fila_enabled == true) {
|
||
if (filament_switch_sensor_fila_filament_detected == false) {
|
||
printer_ready = false;
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT_2);
|
||
}
|
||
}
|
||
|
||
if (filament_detected == false) {
|
||
sleep(1);
|
||
printer_ready = false;
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT);
|
||
}
|
||
|
||
if (printer_print_stats_state == "complete") {
|
||
std::string time_duration = show_time((int)(printer_print_stats_print_duration));
|
||
complete_print();
|
||
clear_previous_data();
|
||
sleep(5);
|
||
save_current_zoffset();
|
||
page_to(TJC_PAGE_PRINT_FINISH);
|
||
send_cmd_txt(tty_fd, "t1", time_duration);
|
||
}
|
||
|
||
if (printer_print_stats_state == "paused") {
|
||
if (printer_ready == true) {
|
||
printer_ready = false;
|
||
page_to(TJC_PAGE_PRINT_FILAMENT);
|
||
}
|
||
}
|
||
|
||
if (printer_print_stats_state == "standby") {
|
||
page_to(TJC_PAGE_PRINT_STOPPING);
|
||
}
|
||
|
||
if (printer_print_stats_state == "error") {
|
||
page_to(TJC_PAGE_GCODE_ERROR);
|
||
cancel_print();
|
||
clear_previous_data();
|
||
send_cmd_txt(tty_fd, "t0", "gcode error:" + error_message);
|
||
}
|
||
}
|
||
|
||
void clear_page_printing_arg() {
|
||
current_extruder_temperature = 0;
|
||
current_extruder_target = 0;
|
||
current_heater_bed_target = 0;
|
||
current_heater_bed_temperature = 0;
|
||
current_hot_target = 0;
|
||
current_hot_temperature = 0;
|
||
current_out_pin_fan0_value = 0;
|
||
current_out_pin_fan2_value = 0;
|
||
current_out_pin_fan3_value = 0;
|
||
|
||
current_speed_factor = 0;
|
||
current_extruder_factor = 0;
|
||
}
|
||
|
||
void refresh_page_preview() {
|
||
if (printer_bed_leveling == true) {
|
||
send_cmd_picc(tty_fd, "b2", "45");
|
||
send_cmd_picc2(tty_fd, "b2", "45");
|
||
}else {
|
||
send_cmd_picc(tty_fd, "b2", "46");
|
||
send_cmd_picc2(tty_fd, "b2", "46");
|
||
}
|
||
if (mks_file_parse_finished == true) {
|
||
if (show_preview_complete == false) {
|
||
//4.4.2 CLL 修改当前在预览图界面仅能看到文件名称
|
||
send_cmd_txt(tty_fd, "t0", file_metadata_filename.substr(file_metadata_filename.rfind("/") + 1));
|
||
if (file_metadata_estimated_time) {
|
||
send_cmd_txt(tty_fd, "t1", show_time(file_metadata_estimated_time));
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t1", "-");
|
||
}
|
||
|
||
if (file_metadata_filament_weight_total) {
|
||
std::string temp = std::to_string(file_metadata_filament_weight_total);
|
||
send_cmd_txt(tty_fd, "t2", temp.substr(0, temp.find(".") + 2) + "g");
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t2", "-");
|
||
}
|
||
|
||
if (file_metadata_filament_total) {
|
||
std::string temp = std::to_string(file_metadata_filament_total / 1000);
|
||
send_cmd_txt(tty_fd, "t3", temp.substr(0, temp.find(".") + 2) + "m");
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t3", "-");
|
||
}
|
||
|
||
if (file_metadata_filament_type != "") {
|
||
send_cmd_txt(tty_fd, "t4", file_metadata_filament_type);
|
||
} else if (file_metadata_filament_name != ""){
|
||
send_cmd_txt(tty_fd, "t4", file_metadata_filament_name);
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t4", "-");
|
||
}
|
||
|
||
bool path_found = false;
|
||
std::string picture_path;
|
||
if (jump_to_print == true) {
|
||
picture_path = "/.cache/.thumbs/" + printer_print_stats_filename.substr(printer_print_stats_filename.rfind("/") + 1, printer_print_stats_filename.rfind(".") - (printer_print_stats_filename.rfind("/") + 1));
|
||
} else if (cache_clicked == true) {
|
||
picture_path = page_files_path_stack.top() + "/.cache/.thumbs/" + file_metadata_filename.substr(file_metadata_filename.rfind("/") + 1, file_metadata_filename.rfind(".") - (file_metadata_filename.rfind("/") + 1));
|
||
cache_clicked = false;
|
||
} else {
|
||
picture_path = page_files_path_stack.top() + "/.thumbs/" + file_metadata_filename.substr(file_metadata_filename.rfind("/") + 1, file_metadata_filename.rfind(".") - (file_metadata_filename.rfind("/") + 1));
|
||
}
|
||
if (path_found == false) {
|
||
picture_path = picture_path.substr(1);
|
||
MKSLOG_RED("picture_path:%s", picture_path.c_str());
|
||
char relative_path[1024];
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-160x160.png", picture_path.c_str()); // CLL 先在目录下寻找168x168像素图片
|
||
MKSLOG("relative_path:%s", relative_path);
|
||
if (access(relative_path, F_OK) == 0) {
|
||
path_found = true;
|
||
picture_path = picture_path + "-160x160.png";
|
||
} else {
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-160x160.jpg",picture_path.c_str()); // CLL 再在目录下寻找32x32像素图片
|
||
if (access(relative_path, F_OK) == 0) {
|
||
path_found = true;
|
||
picture_path = picture_path + "-160x160.jpg";
|
||
}
|
||
}
|
||
}
|
||
MKSLOG_BLUE("图片路径:%s", picture_path.c_str());
|
||
if (picture_path == "") {
|
||
path_found = false;
|
||
}
|
||
|
||
if (path_found == true) {
|
||
// 刷小图
|
||
if (show_preview_gimage_completed == false) {
|
||
output_imgdata(picture_path, 160);
|
||
std::ifstream simage_infile("/home/mks/tjc");
|
||
if (!simage_infile) {
|
||
std::cerr << "无法打开文件 " << "/home/mks/tjc" << std::endl;
|
||
show_preview_complete = true;
|
||
return;
|
||
}
|
||
std::stringstream simage_buffer;
|
||
simage_buffer << simage_infile.rdbuf();
|
||
file_metadata_simage = simage_buffer.str();
|
||
simage_infile.close();
|
||
send_cmd_txt(tty_fd, "preview.cp0_text", "");
|
||
send_cmd_txt(tty_fd, "preview.add", "");
|
||
if (file_metadata_simage != "") {
|
||
send_cmd_baud(tty_fd, 921600);
|
||
usleep(50000);
|
||
set_option(tty_fd, 921600, 8, 'N', 1);
|
||
std::cout << "刷小图" << std::endl;
|
||
int num = 2048;
|
||
int len = file_metadata_simage.length();
|
||
int end = num;
|
||
std::string s;
|
||
for (int start = 0; start < len;) {
|
||
if (end > len) {
|
||
s = file_metadata_simage.substr(start, len - start);
|
||
send_cmd_txt(tty_fd, "add", s);
|
||
tcdrain(tty_fd);
|
||
send_cmd_txt_plus(tty_fd, "cp0_text", "cp0_text", "add");
|
||
tcdrain(tty_fd);
|
||
break;
|
||
}
|
||
s = file_metadata_simage.substr(start, num);
|
||
start = end;
|
||
end = end + num;
|
||
send_cmd_txt(tty_fd, "add", s);
|
||
tcdrain(tty_fd);
|
||
send_cmd_txt_plus(tty_fd, "cp0_text", "cp0_text", "add");
|
||
tcdrain(tty_fd);
|
||
// usleep(50000);
|
||
}
|
||
send_cmd_baud(tty_fd, 115200);
|
||
usleep(50000);
|
||
set_option(tty_fd, 115200, 8, 'N', 1);
|
||
}
|
||
|
||
// 刷大图
|
||
if (jump_to_print == false) {
|
||
// output_imgdata(thumbnail_path, 168);
|
||
std::ifstream infile("/home/mks/tjc"); // 打开文件
|
||
if (!infile) {
|
||
std::cerr << "无法打开文件 " << "/home/mks/tjc" << std::endl;
|
||
show_preview_complete = true;
|
||
return;
|
||
}
|
||
std::stringstream buffer;
|
||
buffer << infile.rdbuf();
|
||
file_metadata_gimage = buffer.str();
|
||
infile.close();
|
||
send_cmd_baud(tty_fd, 921600);
|
||
usleep(50000);
|
||
set_option(tty_fd, 921600, 8, 'N', 1);
|
||
send_cmd_cp_close(tty_fd, "preview.cp0");
|
||
if (file_metadata_gimage != "") {
|
||
std::cout << "刷大图" << std::endl;
|
||
// std::cout << "图片字符串的大小为: " << file_metadata_gimage.length() << std::endl;
|
||
// std::cout << "图片的字节大小为:" << file_metadata_gimage.size() << std::endl;
|
||
int num = 2048;
|
||
int len = file_metadata_gimage.length();
|
||
int end = num;
|
||
std::string g;
|
||
// int i = 0;
|
||
for (int start = 0; start < len;) {
|
||
if (end > len) {
|
||
g = file_metadata_gimage.substr(start, len - start);
|
||
// std::cout << "字串" << i << ":" << s << std::endl;
|
||
tcdrain(tty_fd);
|
||
send_cmd_cp_image(tty_fd, "cp0", g);
|
||
break;
|
||
}
|
||
g = file_metadata_gimage.substr(start, num);
|
||
start = end;
|
||
end = end + num;
|
||
// std::cout << "字串" << i << ":" << s << std::endl;
|
||
// i++;
|
||
tcdrain(tty_fd);
|
||
send_cmd_cp_image(tty_fd, "cp0", g);
|
||
// usleep(50000);
|
||
}
|
||
}
|
||
send_cmd_baud(tty_fd, 115200);
|
||
usleep(50000);
|
||
set_option(tty_fd, 115200, 8, 'N', 1);
|
||
bed_leveling_switch(true);
|
||
}
|
||
show_preview_gimage_completed = true;
|
||
}
|
||
}
|
||
|
||
if (show_preview_gimage_completed == true) {
|
||
send_cmd_vis(tty_fd, "cp0", "1");
|
||
} else {
|
||
send_cmd_vis(tty_fd, "cp0", "0");
|
||
}
|
||
|
||
show_preview_complete = true;
|
||
if (jump_to_print == true) {
|
||
//printed_file_path = "/" + printer_print_stats_filename;
|
||
check_filament_type();
|
||
jump_to_print = false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void refresh_page_main() {
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_extruder_temperature));
|
||
send_cmd_val(tty_fd, "n1", std::to_string(printer_heater_bed_temperature));
|
||
send_cmd_val(tty_fd, "n2", std::to_string(printer_hot_temperature));
|
||
|
||
if (detect_disk() == 0) { // CLL 是否已插入U盘
|
||
send_cmd_picc(tty_fd, "q1", "32");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "q1", "33");
|
||
}
|
||
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) { // CLL 是否已连接wifi
|
||
send_cmd_picc(tty_fd, "q0", "32");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "q0", "33");
|
||
}
|
||
|
||
if (printer_caselight_value == 0) { // LED灯的logo
|
||
send_cmd_picc(tty_fd, "b0", "32");
|
||
send_cmd_picc2(tty_fd, "b0", "30");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b0", "33");
|
||
send_cmd_picc2(tty_fd, "b0", "31");
|
||
}
|
||
|
||
if (printer_out_pin_beep_value == 0) {
|
||
send_cmd_picc(tty_fd, "b1", "32");
|
||
send_cmd_picc2(tty_fd, "b1", "30");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b1", "33");
|
||
send_cmd_picc2(tty_fd, "b1", "31");
|
||
}
|
||
|
||
if (printer_extruder_target == 0) { // CLL 主页喷嘴是否加热刷新
|
||
send_cmd_pco(tty_fd, "n0", "65535");
|
||
send_cmd_picc(tty_fd, "b3", "32");
|
||
send_cmd_picc2(tty_fd, "b3", "30");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "n0", "63488");
|
||
send_cmd_picc(tty_fd, "b3", "33");
|
||
send_cmd_picc2(tty_fd, "b3", "31");
|
||
}
|
||
|
||
if (printer_heater_bed_target == 0) { // CLL 主页热床按钮是否加热刷新
|
||
send_cmd_pco(tty_fd, "n1", "65535");
|
||
send_cmd_picc(tty_fd, "b4", "32");
|
||
send_cmd_picc2(tty_fd, "b4", "30");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "n1", "63488");
|
||
send_cmd_picc(tty_fd, "b4", "33");
|
||
send_cmd_picc2(tty_fd, "b4", "31");
|
||
}
|
||
|
||
if (printer_hot_target == 0) { // CLL 主页热腔按钮是否加热刷新
|
||
send_cmd_pco(tty_fd, "n2", "65535");
|
||
send_cmd_picc(tty_fd, "b5", "32");
|
||
send_cmd_picc2(tty_fd, "b5", "30");
|
||
} else {
|
||
send_cmd_pco(tty_fd, "n2", "63488");
|
||
send_cmd_picc(tty_fd, "b5", "33");
|
||
send_cmd_picc2(tty_fd, "b5", "31");
|
||
}
|
||
|
||
// CLL 每次开机或打印后执行图片刷新
|
||
|
||
if (main_picture_refreshed == false) {
|
||
// CLL 获取文件信息
|
||
page_files_pages = 0;
|
||
page_files_current_pages = 0;
|
||
page_files_folder_layers = 0;
|
||
page_files_previous_path = "";
|
||
page_files_root_path = DEFAULT_DIR;
|
||
page_files_path = "";
|
||
refresh_page_files(page_files_current_pages);
|
||
if (page_files_list_show_type[0] == "[c]") {
|
||
send_cmd_txt(tty_fd, "t0", page_files_list_show_name[0]);
|
||
std::string picture_path = page_files_path + "/.cache/.thumbs/" + page_files_list_show_name[0].substr(0, page_files_list_show_name[0].rfind("."));
|
||
picture_path = picture_path.substr(1);
|
||
MKSLOG_RED("图片路径:%s", picture_path.c_str());
|
||
char relative_path[1024];
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-160x160.png", picture_path.c_str());
|
||
if (access(relative_path, F_OK) == 0) {
|
||
MKSLOG_RED("找到png图片");
|
||
send_cmd_pic(tty_fd, "b[0]", "29");
|
||
send_cmd_picc(tty_fd, "b6", "29");
|
||
send_cmd_picc2(tty_fd, "b6", "30");
|
||
send_cmd_vis(tty_fd, "cp0", "1");
|
||
refresh_files_list_picture(picture_path + "-160x160.png", 160, 0);
|
||
main_picture_detected = true;
|
||
} else {
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-160x160.jpg", picture_path.c_str());
|
||
if (access(relative_path, F_OK) == 0) {
|
||
MKSLOG_RED("找到jpg图片");
|
||
send_cmd_pic(tty_fd, "b[0]", "29");
|
||
send_cmd_picc(tty_fd, "b6", "29");
|
||
send_cmd_picc2(tty_fd, "b6", "30");
|
||
refresh_files_list_picture(picture_path + "-160x160.jpg", 160, 0);
|
||
main_picture_detected = true;
|
||
} else {
|
||
send_cmd_pic(tty_fd, "b[0]", "26");
|
||
send_cmd_picc(tty_fd, "b6", "26");
|
||
send_cmd_picc2(tty_fd, "b6", "31");
|
||
send_cmd_vis(tty_fd, "cp0", "0");
|
||
}
|
||
}
|
||
} else {
|
||
send_cmd_pic(tty_fd, "b[0]", "26");
|
||
send_cmd_picc(tty_fd, "b6", "26");
|
||
send_cmd_picc2(tty_fd, "b6", "31");
|
||
send_cmd_txt(tty_fd, "t0", "");
|
||
send_cmd_vis(tty_fd, "cp0", "0");
|
||
}
|
||
main_picture_refreshed = true;
|
||
}
|
||
|
||
// CLL 每次开机发送断电续打
|
||
if (open_reprint_asked == false) {
|
||
check_print_interrupted();
|
||
open_reprint_asked = true;
|
||
}
|
||
}
|
||
|
||
void refresh_page_files_list() {
|
||
send_cmd_vis(tty_fd, "q0", "0");
|
||
for (int i = 0; i < 4; i++) {
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i + 1), page_files_list_show_name[i]);
|
||
send_cmd_vis(tty_fd, "cp" + std::to_string(i), "0");
|
||
if (page_files_list_show_type[i] =="[c]") {
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i+1), "40");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i+1), "37");
|
||
send_cmd_vis(tty_fd, "q0", "1");
|
||
} else if (page_files_list_show_type[i] == "[d]") {
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i + 1), "41");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i + 1), "39");
|
||
} else if (page_files_list_show_type[i] == "[f]") {
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i + 1), "40");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i + 1), "37");
|
||
|
||
} else if (page_files_list_show_type[i] == "[n]") {
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i + 1), "34");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i + 1), "34");
|
||
}
|
||
}
|
||
|
||
//4.4.2 CLL 文件列表界面新增本地、U盘文件按钮
|
||
if (file_mode == "Local") {
|
||
send_cmd_picc(tty_fd, "b12", "35");
|
||
send_cmd_picc2(tty_fd, "b12", "37");
|
||
send_cmd_picc(tty_fd, "b13", "35");
|
||
send_cmd_picc2(tty_fd, "b13", "37");
|
||
} else if (file_mode == "USB") {
|
||
send_cmd_picc(tty_fd, "b12", "34");
|
||
send_cmd_picc2(tty_fd, "b12", "36");
|
||
send_cmd_picc(tty_fd, "b13", "34");
|
||
send_cmd_picc2(tty_fd, "b13", "36");
|
||
if (detect_disk() == -1) {
|
||
send_cmd_vis(tty_fd, "t0", "1");
|
||
}
|
||
} /* else if (file_mode == "NULL") {
|
||
send_cmd_picc(tty_fd, "b12", "34");
|
||
send_cmd_picc2(tty_fd, "b12", "36");
|
||
send_cmd_picc(tty_fd, "b13", "34");
|
||
send_cmd_picc2(tty_fd, "b13", "36");
|
||
send_cmd_vis(tty_fd, "t0", "1");
|
||
}
|
||
*/
|
||
if (page_files_current_pages == 0) {
|
||
send_cmd_picc(tty_fd, "b10", std::to_string(40));
|
||
send_cmd_picc2(tty_fd, "b10", std::to_string(39));
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b10", std::to_string(41));
|
||
send_cmd_picc2(tty_fd, "b10", std::to_string(37));
|
||
}
|
||
if (page_files_current_pages == page_files_pages) {
|
||
send_cmd_picc(tty_fd, "b11", std::to_string(40));
|
||
send_cmd_picc2(tty_fd, "b11", std::to_string(39));
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b11", std::to_string(41));
|
||
send_cmd_picc2(tty_fd, "b11", std::to_string(37));
|
||
}
|
||
if (page_files_folder_layers == 0 || (page_files_folder_layers == 1 && file_mode != "Local")) {
|
||
send_cmd_picc(tty_fd, "b0", std::to_string(40));
|
||
send_cmd_picc2(tty_fd, "b0", std::to_string(39));
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b0", std::to_string(41));
|
||
send_cmd_picc2(tty_fd, "b0", std::to_string(37));
|
||
}
|
||
delete_small_jpg();
|
||
std::string picture_path;
|
||
for (int i = 0; i < 4; i++) { // CLL 其他控件刷新完后统一刷新图片
|
||
have_64_jpg[i] = false;
|
||
have_64_png_path[i].clear();
|
||
if (page_files_list_show_type[i] =="[c]" || page_files_list_show_type[i] == "[f]") {
|
||
if (page_files_list_show_type[i]== "[c]") {
|
||
picture_path = page_files_path + "/.cache/.thumbs/" + page_files_list_show_name[i].substr(0, page_files_list_show_name[i].rfind("."));
|
||
} else {
|
||
picture_path = page_files_path + "/.thumbs/" + page_files_list_show_name[i].substr(0, page_files_list_show_name[i].rfind("."));
|
||
}
|
||
picture_path = picture_path.substr(1);
|
||
MKSLOG_RED("图片路径:%s", picture_path.c_str());
|
||
char relative_path[1024];
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-112x112_QD.jpg", picture_path.c_str());
|
||
if (access(relative_path, F_OK) == 0) {
|
||
have_64_jpg[i] = true;
|
||
have_64_png_path[i] = picture_path + "-112x112_QD.jpg";
|
||
refresh_files_list_picture_2(picture_path + "-112x112_QD.jpg", 112, i);
|
||
} /* else {
|
||
sprintf(relative_path, "/home/mks/gcode_files/%s-32x32.png", picture_path.c_str());
|
||
if (access(relative_path, F_OK) == 0) {
|
||
have_64_jpg[i] = true;
|
||
have_64_png_path[i] = picture_path + "-32x32.png";
|
||
refresh_files_list_picture_2(picture_path + "-32x32.png", 112, i);
|
||
}
|
||
}
|
||
*/
|
||
}
|
||
}
|
||
}
|
||
|
||
void refresh_page_files(int pages) {
|
||
get_page_files_filelist(page_files_root_path + page_files_path);
|
||
set_page_files_show_list(pages);
|
||
}
|
||
|
||
/* 订阅内容处理 */
|
||
void sub_object_status() {
|
||
ep->Send(json_subscribe_to_printer_object_status(subscribe_objects_status()));
|
||
}
|
||
|
||
void get_object_status() {
|
||
ep->Send(json_query_printer_object_status(subscribe_objects_status()));
|
||
}
|
||
|
||
void get_file_estimated_time(std::string filename) {
|
||
ep->Send(json_get_gcode_metadata(filename));
|
||
}
|
||
|
||
void delete_file(std::string filepath) {
|
||
filelist_changed = false;
|
||
ep->Send(json_file_delete(filepath));
|
||
while (!filelist_changed);
|
||
}
|
||
|
||
void start_printing(std::string filepath) {
|
||
ep->Send(json_print_a_file(filepath));
|
||
}
|
||
|
||
void set_target(std::string heater, int target) {
|
||
ep->Send(json_run_a_gcode(set_heater_temp(heater, target)));
|
||
}
|
||
|
||
void set_extruder_target(int target) {
|
||
set_target("extruder", target);
|
||
}
|
||
|
||
void set_heater_bed_target(int target) {
|
||
set_target("heater_bed", target);
|
||
}
|
||
|
||
void set_hot_target(int target) {
|
||
ep->Send(json_run_a_gcode("M141 S" + std::to_string(target)));
|
||
}
|
||
|
||
void set_fan(int speed) {
|
||
ep->Send(json_run_a_gcode(set_fan_speed(speed)));
|
||
}
|
||
|
||
void set_fan0(int speed) {
|
||
ep->Send(json_run_a_gcode(set_fan0_speed(speed)));
|
||
}
|
||
|
||
void set_fan2(int speed) {
|
||
ep->Send(json_run_a_gcode(set_fan2_speed(speed)));
|
||
}
|
||
|
||
void set_fan3(int speed) {
|
||
ep->Send(json_run_a_gcode(set_fan3_speed(speed)));
|
||
}
|
||
|
||
void set_intern_zoffset(float offset) {
|
||
printer_set_offset = offset;
|
||
|
||
}
|
||
|
||
void set_zoffset(bool positive) {
|
||
// std::string command;
|
||
// if (positive) {
|
||
// command = "curl -s -X POST http://127.0.0.1:7125/printer/modifybabystep?ADJUST=" + std::to_string(printer_set_offset);
|
||
// } else {
|
||
// command = "curl -s -X POST http://127.0.0.1:7125/printer/modifybabystep?ADJUST=-" + std::to_string(printer_set_offset);
|
||
// }
|
||
// system(command.c_str());
|
||
if (positive == true) {
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=+" + std::to_string(printer_set_offset) + " MOVE=1"));
|
||
} else {
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=-" + std::to_string(printer_set_offset) + " MOVE=1"));
|
||
}
|
||
}
|
||
|
||
void set_move_dist(float dist) {
|
||
printer_move_dist = dist;
|
||
}
|
||
|
||
void set_printer_speed(int speed) {
|
||
std::cout << "Rate = " << std::to_string(speed) << std::endl;
|
||
ep->Send(json_run_a_gcode(set_speed_rate(std::to_string(speed))));
|
||
}
|
||
|
||
void set_printer_flow(int rate) {
|
||
ep->Send(json_run_a_gcode("M221 S" + (std::to_string(rate))));
|
||
}
|
||
|
||
std::string show_time(int seconds) {
|
||
return std::to_string((int)(seconds/3600)) + "h" + std::to_string((int)((seconds % 3600) / 60)) + "m";
|
||
}
|
||
|
||
void move_home() {
|
||
ep->Send(json_run_a_gcode("G28\n"));
|
||
}
|
||
|
||
void move_x_decrease() {
|
||
ep->Send(move(AXIS_X, "-" + std::to_string(printer_move_dist), 130));
|
||
unhomed_move_mode = 2;
|
||
}
|
||
|
||
void move_x_increase() {
|
||
ep->Send(move(AXIS_X, "+" + std::to_string(printer_move_dist), 130));
|
||
unhomed_move_mode = 1;
|
||
}
|
||
|
||
void move_y_decrease() {
|
||
ep->Send(move(AXIS_Y, "-" + std::to_string(printer_move_dist), 130));
|
||
unhomed_move_mode = 4;
|
||
}
|
||
|
||
void move_y_increase() {
|
||
ep->Send(move(AXIS_Y, "+" + std::to_string(printer_move_dist), 130));
|
||
unhomed_move_mode = 3;
|
||
}
|
||
|
||
void move_z_decrease() {
|
||
ep->Send(move(AXIS_Z, "-" + std::to_string(printer_move_dist), 10));
|
||
unhomed_move_mode = 5;
|
||
}
|
||
|
||
void move_z_increase() {
|
||
ep->Send(move(AXIS_Z, "+" + std::to_string(printer_move_dist), 10));
|
||
unhomed_move_mode = 6;
|
||
}
|
||
|
||
bool get_filament_detected() {
|
||
return filament_switch_sensor_fila_filament_detected;
|
||
}
|
||
|
||
bool get_filament_detected_enable() {
|
||
return filament_switch_sensor_fila_enabled;
|
||
}
|
||
|
||
bool get_print_pause_resume() {
|
||
return printer_pause_resume_is_paused;
|
||
}
|
||
|
||
void set_print_pause_resume() {
|
||
if (printer_pause_resume_is_paused == false) {
|
||
ep->Send(json_run_a_gcode("PAUSE"));
|
||
} else {
|
||
ep->Send(json_run_a_gcode("RESUME"));
|
||
}
|
||
}
|
||
|
||
void set_print_pause() {
|
||
ep->Send(json_run_a_gcode("PAUSE"));
|
||
}
|
||
|
||
void set_print_resume() {
|
||
ep->Send(json_run_a_gcode("RESUME"));
|
||
}
|
||
|
||
void cancel_print() {
|
||
printer_print_stats_filename = "";
|
||
system("curl -X POST http://127.0.0.1:7125/printer/breakmacro");
|
||
system("curl -X POST http://127.0.0.1:7125/printer/breakheater");
|
||
ep->Send(json_run_a_gcode("CANCEL_PRINT"));
|
||
int printed_minutes = get_cal_printed_time((int)(printer_print_stats_print_duration));
|
||
get_mks_total_printed_time();
|
||
mks_total_printed_minutes = mks_total_printed_minutes + printed_minutes;
|
||
std::cout << "@@@@@@ " << printed_minutes << std::endl;
|
||
set_mks_total_printed_time(mks_total_printed_minutes);
|
||
usleep(10000);
|
||
sdcard_reset_file();
|
||
}
|
||
|
||
void sdcard_reset_file() {
|
||
ep->Send(json_run_a_gcode("SDCARD_RESET_FILE"));
|
||
}
|
||
|
||
void set_auto_level_dist(float dist) {
|
||
MKSLOG_BLUE("SET");
|
||
auto_level_dist = dist;
|
||
}
|
||
|
||
void start_auto_level() {
|
||
step_1 = false;
|
||
step_2 = false;
|
||
step_3 = false;
|
||
step_4 = false;
|
||
if (start_pre_auto_level == false) {
|
||
printer_idle_timeout_state = "Printing";
|
||
}
|
||
page_to(TJC_PAGE_AUTO_MOVING);
|
||
set_heater_bed_target(mks_heater_bed_target);
|
||
ep->Send(json_run_a_gcode("M4029"));
|
||
}
|
||
|
||
//4.4.1 CLL 修改调平
|
||
void start_auto_level_dist(bool positive) {
|
||
if (positive == true) {
|
||
//ep->Send(json_run_a_gcode("TESTZ Z=" + std::to_string(auto_level_dist)));
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=" + std::to_string(auto_level_dist) + " MOVE=1"));
|
||
} else {
|
||
//ep->Send(json_run_a_gcode("TESTZ Z=-" + std::to_string(auto_level_dist)));
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=-" + std::to_string(auto_level_dist) + " MOVE=1"));
|
||
}
|
||
}
|
||
|
||
void set_filament_extruder_target(bool positive) {
|
||
get_mks_extruder_target();
|
||
printer_filament_extruder_target = mks_extruder_target;
|
||
if (positive == true) {
|
||
printer_filament_extruder_target += 3;
|
||
} else {
|
||
printer_filament_extruder_target -= 3;
|
||
}
|
||
|
||
if (printer_filament_extruder_target >= 350) {
|
||
printer_filament_extruder_target = 350;
|
||
}
|
||
|
||
if (printer_filament_extruder_target < 0) {
|
||
printer_filament_extruder_target = 0;
|
||
set_extruder_target(0);
|
||
set_mks_extruder_target(0);
|
||
} else {
|
||
set_extruder_target(printer_filament_extruder_target);
|
||
set_mks_extruder_target(printer_filament_extruder_target);
|
||
}
|
||
}
|
||
|
||
void set_print_filament_dist(float dist) {
|
||
printer_filament_extruedr_dist = dist;
|
||
}
|
||
|
||
void start_retract() {
|
||
ep->Send(json_run_a_gcode("M83\nG1 E-" + std::to_string(printer_filament_extruedr_dist) + " F300\n"));
|
||
}
|
||
|
||
void start_extrude() {
|
||
ep->Send(json_run_a_gcode("M83\nG1 E" + std::to_string(printer_filament_extruedr_dist) + " F300\n"));
|
||
}
|
||
|
||
std::string get_ip(std::string net) {
|
||
char result[MAX_FILE_LEN] = {0};
|
||
std::string cmd = "ifconfig " + net + " | awk 'NR==2{print $2}' | tr -d '\n\r'";
|
||
execute_cmd(cmd.data(), result);
|
||
return result;
|
||
}
|
||
|
||
void move_home_tips() {
|
||
jump_to_move_pop_2 = true;
|
||
}
|
||
|
||
void filament_tips() {
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_OPEN_FILAMENTVIDEO_3:
|
||
break;
|
||
|
||
case TJC_PAGE_PRINT_FILAMENT:
|
||
jump_to_print_low_temp = true;
|
||
break;
|
||
|
||
default:
|
||
jump_to_filament_pop_1 = true;
|
||
break;
|
||
}
|
||
}
|
||
|
||
void move_tips() {
|
||
jump_to_move_pop_1 = true;
|
||
if (current_page_id == TJC_PAGE_PRINTING || current_page_id == TJC_PAGE_PRINT_ZOFFSET || current_page_id == TJC_PAGE_PRINT_FILAMENT || current_page_id == TJC_PAGE_PRINTING_2) {
|
||
cancel_print();
|
||
}
|
||
}
|
||
|
||
void reset_klipper() {
|
||
ep->Send(json_run_a_gcode("RESTART\n"));
|
||
}
|
||
|
||
void reset_firmware() {
|
||
ep->Send(json_run_a_gcode("FIRMWARE_RESTART\n"));
|
||
}
|
||
|
||
void finish_print() {
|
||
sdcard_reset_file();
|
||
clear_cp0_image();
|
||
clear_page_preview();
|
||
show_preview_complete = false;
|
||
page_to(TJC_PAGE_MAIN);
|
||
}
|
||
|
||
void set_filament_sensor() {
|
||
std::cout << "filament_switch_sensor fila = " << filament_switch_sensor_fila_enabled << std::endl;
|
||
if (filament_switch_sensor_fila_enabled == 0) {
|
||
ep->Send(json_run_a_gcode("SET_FILAMENT_SENSOR SENSOR=fila ENABLE=1\n"));
|
||
mks_fila_status = true;
|
||
set_mks_fila_status();
|
||
} else {
|
||
ep->Send(json_run_a_gcode("SET_FILAMENT_SENSOR SENSOR=fila ENABLE=0\n"));
|
||
mks_fila_status = false;
|
||
set_mks_fila_status();
|
||
}
|
||
}
|
||
|
||
void motors_off() {
|
||
// ep->Send(json_run_a_gcode("M84\n"));
|
||
ep->Send(json_emergency_stop());
|
||
sleep(1);
|
||
ep->Send(json_run_a_gcode("FIRMWARE_RESTART\n")); // 电机解锁改为急停
|
||
}
|
||
|
||
void beep_on_off() {
|
||
if (printer_out_pin_beep_value == 0) {
|
||
ep->Send(json_run_a_gcode("beep_on"));
|
||
mks_beep_status = true;
|
||
set_mks_beep_status();
|
||
} else {
|
||
ep->Send(json_run_a_gcode("beep_off"));
|
||
mks_beep_status = false;
|
||
set_mks_beep_status();
|
||
}
|
||
}
|
||
|
||
void led_on_off() {
|
||
if (printer_caselight_value == 0) {
|
||
ep->Send(json_run_a_gcode("SET_PIN PIN=caselight VALUE=1"));
|
||
if (current_page_id != TJC_PAGE_SCREEN_SLEEP) {
|
||
mks_led_status = true;
|
||
set_mks_led_status();
|
||
}
|
||
} else {
|
||
ep->Send(json_run_a_gcode("SET_PIN PIN=caselight VALUE=0"));
|
||
if (current_page_id != TJC_PAGE_SCREEN_SLEEP){
|
||
mks_led_status = false;
|
||
set_mks_led_status();
|
||
}
|
||
}
|
||
}
|
||
|
||
void shutdown_mcu() {
|
||
system("echo \"SET_PIN PIN=pwc VALUE=0\" > /root/mcu_shutdown.txt");
|
||
ep->Send(json_run_a_gcode("SET_PIN PIN=pwc VALUE=0"));
|
||
}
|
||
|
||
void firmware_reset() {
|
||
ep->Send(json_run_a_gcode("FIRMWARE_RESTART\n"));
|
||
}
|
||
|
||
void go_to_page_power_off() {
|
||
page_to(TJC_PAGE_SHUTDOWN);
|
||
}
|
||
|
||
int get_mks_led_status() {
|
||
mksini_load();
|
||
mks_led_status = mksini_getboolean("led", "enable", 0);
|
||
mksini_free();
|
||
return mks_led_status;
|
||
}
|
||
|
||
void set_mks_led_status() {
|
||
mksini_load();
|
||
mksini_set("led", "enable", std::to_string(mks_led_status));
|
||
mksini_save();
|
||
mksini_free();
|
||
}
|
||
|
||
int get_mks_beep_status() {
|
||
mksini_load();
|
||
mks_beep_status = mksini_getboolean("beep", "enable", 0);
|
||
mksini_free();
|
||
return mks_beep_status;
|
||
}
|
||
|
||
void set_mks_beep_status() {
|
||
mksini_load();
|
||
mksini_set("beep", "enable", std::to_string(mks_beep_status));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void get_mks_language_status() {
|
||
mksini_load();
|
||
mks_language_status = mksini_getint("system", "language", 0);
|
||
mksini_free();
|
||
}
|
||
|
||
void set_mks_language_status() {
|
||
mksini_load();
|
||
mksini_set("system", "language", std::to_string(mks_language_status));
|
||
mksini_save();
|
||
mksini_free();
|
||
}
|
||
|
||
void get_mks_extruder_target() {
|
||
mksini_load();
|
||
mks_extruder_target = mksini_getint("target", "extruder", 200);
|
||
mksini_free();
|
||
}
|
||
|
||
void set_mks_extruder_target(int target) {
|
||
if (target != 0) {
|
||
mksini_load();
|
||
mksini_set("target", "extruder", std::to_string(target));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
}
|
||
|
||
void get_mks_heater_bed_target() {
|
||
mksini_load();
|
||
mks_heater_bed_target = mksini_getint("target", "heaterbed", 40);
|
||
mksini_free();
|
||
}
|
||
|
||
void set_mks_heater_bed_target(int target) {
|
||
if (target != 0) {
|
||
mksini_load();
|
||
std::cout << "######## " << target << std::endl;
|
||
mksini_set("target", "heaterbed", std::to_string(target));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
}
|
||
|
||
void get_mks_hot_target() {
|
||
mksini_load();
|
||
mks_hot_target = mksini_getint("target", "hot", 40);
|
||
mksini_free();
|
||
}
|
||
|
||
void set_mks_hot_target(int target) {
|
||
mksini_load();
|
||
std::cout << "######## " << target << std::endl;
|
||
mksini_set("target", "hot", std::to_string(target));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void filament_extruder_target() {
|
||
get_mks_extruder_target();
|
||
if (printer_extruder_target == 0) {
|
||
set_extruder_target(mks_extruder_target);
|
||
} else {
|
||
set_extruder_target(0);
|
||
}
|
||
}
|
||
|
||
void filament_heater_bed_target() {
|
||
get_mks_heater_bed_target();
|
||
if (0 == printer_heater_bed_target) {
|
||
set_heater_bed_target(mks_heater_bed_target);
|
||
} else {
|
||
set_heater_bed_target(0);
|
||
}
|
||
}
|
||
|
||
void filament_hot_target() {
|
||
get_mks_hot_target();
|
||
if (0 == printer_hot_target) {
|
||
set_hot_target(mks_hot_target);
|
||
} else {
|
||
set_hot_target(0);
|
||
}
|
||
}
|
||
|
||
void filament_fan0() {
|
||
if (printer_out_pin_fan0_value == 0) {
|
||
set_fan0(100);
|
||
} else {
|
||
set_fan0(0);
|
||
}
|
||
}
|
||
|
||
void filament_fan2() {
|
||
if (printer_out_pin_fan2_value == 0) {
|
||
set_fan2(100);
|
||
} else {
|
||
set_fan2(0);
|
||
}
|
||
}
|
||
|
||
void filament_fan3() {
|
||
if (printer_out_pin_fan3_value == 0) {
|
||
set_fan3(100);
|
||
} else {
|
||
set_fan3(0);
|
||
}
|
||
}
|
||
|
||
void go_to_reset() {
|
||
if (printer_webhooks_state == "shutdown") {
|
||
page_to(TJC_PAGE_RESET);
|
||
} else {
|
||
std::ifstream infile("/dev_info.txt");
|
||
if (!infile) {
|
||
std::cerr << "无法打开文件 " << "/dev_info.txt" << std::endl;
|
||
return;
|
||
}
|
||
std::stringstream buffer;
|
||
buffer << infile.rdbuf();
|
||
std::string machine_type = buffer.str();
|
||
infile.close();
|
||
machine_type = machine_type.substr(machine_type.find("@") + 1);
|
||
page_to(TJC_PAGE_SYS_OK);
|
||
std::cout << "machine_type:" << machine_type << std::endl;
|
||
send_cmd_txt(tty_fd, "t2", machine_type);
|
||
}
|
||
}
|
||
|
||
void go_to_network() {
|
||
if (detected_wlan0()) {
|
||
mks_wpa_cli_open_connection();
|
||
page_wifi_list_ssid_button_enabled[0] = false;
|
||
page_wifi_list_ssid_button_enabled[1] = false;
|
||
page_wifi_list_ssid_button_enabled[2] = false;
|
||
page_wifi_list_ssid_button_enabled[3] = false;
|
||
page_wifi_list_ssid_button_enabled[4] = false;
|
||
page_wifi_ssid_list_pages = 0;
|
||
page_wifi_current_pages = 0;
|
||
page_to(TJC_PAGE_WIFI_LIST);
|
||
//4.4.1 CLL 修复WiFi刷新
|
||
scan_ssid_and_show();
|
||
get_wlan0_status();
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
|
||
current_connected_ssid_name = hex_to_utf8(status_result.ssid); // 如果已经连接wifi,获取wifi的名字
|
||
} else if (strcmp(status_result.wpa_state, "INACTIVE")) {
|
||
current_connected_ssid_name.clear(); // 如果没连接wifi,清除掉当前已连接wifi的名字
|
||
}
|
||
} else {
|
||
page_to(TJC_PAGE_INTERNET);
|
||
}
|
||
}
|
||
|
||
void scan_ssid_and_show() {
|
||
if (access("/var/run/wpa_supplicant/wlan0", F_OK) == 0){
|
||
get_wlan0_status();
|
||
mks_wpa_scan_scanresults();
|
||
get_ssid_list_pages();
|
||
page_wifi_current_pages = 0;
|
||
set_page_wifi_ssid_list(page_wifi_current_pages);
|
||
refresh_page_wifi_list();
|
||
} else {
|
||
page_to(TJC_PAGE_INTERNET);
|
||
}
|
||
}
|
||
|
||
void refresh_page_wifi_list() {
|
||
for (int i = 0; i < 5; i++) {
|
||
std::cout << "刷新的wifi: " << page_wifi_ssid_list[i] << std::endl;
|
||
if (0 == page_wifi_current_pages) {
|
||
if (0 == i) {
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), hex_to_utf8(status_result.ssid));
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), page_wifi_ssid_list[i]);
|
||
}
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), page_wifi_ssid_list[i]);
|
||
}
|
||
} else {
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i+1), page_wifi_ssid_list[i]);
|
||
}
|
||
MKSLOG_BLUE("%d/%d", page_wifi_current_pages + 1, page_wifi_ssid_list_pages);
|
||
if (page_wifi_current_pages == 0) {
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
|
||
send_cmd_picc(tty_fd, "wifi1", "126");
|
||
send_cmd_picc2(tty_fd, "wifi1", "124");
|
||
page_wifi_list_ssid_button_enabled[0] = false;
|
||
} else {
|
||
send_cmd_picc(tty_fd, "wifi1", "125");
|
||
send_cmd_picc2(tty_fd, "wifi1", "123");
|
||
page_wifi_list_ssid_button_enabled[0] = true;
|
||
}
|
||
} else {
|
||
send_cmd_picc(tty_fd, "wifi1", "125");
|
||
send_cmd_picc2(tty_fd, "wifi1", "123");
|
||
page_wifi_list_ssid_button_enabled[0] = true;
|
||
}
|
||
|
||
if (page_wifi_ssid_list[i] == "") {
|
||
std::cout << "刷新为没有锁的图片" << std::endl;
|
||
send_cmd_picc(tty_fd, "wifi" + std::to_string(i + 1), "122");
|
||
send_cmd_picc2(tty_fd, "wifi" + std::to_string(i + 1), "122");
|
||
page_wifi_list_ssid_button_enabled[i] = false;
|
||
} else {
|
||
std::cout << "刷新为有锁的图片" << std::endl;
|
||
send_cmd_picc(tty_fd, "wifi" + std::to_string(i + 1), "125");
|
||
send_cmd_picc2(tty_fd, "wifi" + std::to_string(i + 1), "123");
|
||
page_wifi_list_ssid_button_enabled[i] = true;
|
||
}
|
||
|
||
if (page_wifi_ssid_list_pages == 0) {
|
||
send_cmd_picc(tty_fd, "b1", "126");
|
||
send_cmd_picc2(tty_fd, "b1", "123");
|
||
send_cmd_picc(tty_fd, "b2", "126");
|
||
send_cmd_picc2(tty_fd, "b2", "123");
|
||
} else {
|
||
if (page_wifi_current_pages == 0) {
|
||
send_cmd_picc(tty_fd, "b1", "126");
|
||
send_cmd_picc2(tty_fd, "b1", "123");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b1", "125");
|
||
send_cmd_picc2(tty_fd, "b1", "124");
|
||
}
|
||
if (page_wifi_current_pages == page_wifi_ssid_list_pages - 1) {
|
||
send_cmd_picc(tty_fd, "b2", "126");
|
||
send_cmd_picc2(tty_fd, "b2", "123");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b2", "125");
|
||
send_cmd_picc2(tty_fd, "b2", "124");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
void refresh_page_wifi_list_2() {
|
||
send_cmd_txt(tty_fd, "t0", status_result.ip_address);
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0) {
|
||
|
||
} else if (strcmp(status_result.wpa_state, "INACTIVE")) {
|
||
|
||
}
|
||
}
|
||
|
||
void get_wifi_list_ssid(int index) {
|
||
get_wifi_name.clear();
|
||
get_wifi_name = page_wifi_ssid_list[index];
|
||
}
|
||
|
||
void set_print_filament_target() {
|
||
if (0 == printer_extruder_target) {
|
||
get_mks_extruder_target();
|
||
set_extruder_target(mks_extruder_target);
|
||
} else {
|
||
set_extruder_target(0);
|
||
}
|
||
}
|
||
|
||
void complete_print() {
|
||
if (page_printing_shutdown_enable == false) {
|
||
ep->Send(json_run_a_gcode("PRINT_END"));
|
||
} else {
|
||
ep->Send(json_run_a_gcode("PRINT_END_POWEROFF"));
|
||
}
|
||
int printed_minutes = get_cal_printed_time((int)(printer_print_stats_print_duration));
|
||
get_mks_total_printed_time();
|
||
mks_total_printed_minutes = mks_total_printed_minutes + printed_minutes;
|
||
std::cout << "@@@@@@ " << printed_minutes << std::endl;
|
||
set_mks_total_printed_time(mks_total_printed_minutes);
|
||
}
|
||
|
||
void back_to_main() {
|
||
clear_previous_data();
|
||
page_to(TJC_PAGE_MAIN);
|
||
}
|
||
|
||
void go_to_syntony_move() {
|
||
step_1 = false;
|
||
page_syntony_finished = false;
|
||
printer_idle_timeout_state = "Printing";
|
||
page_to(TJC_PAGE_SYNTONY_MOVE);
|
||
ep->Send(json_run_a_gcode("M901\n"));
|
||
}
|
||
|
||
void print_ssid_psk(char *psk) {
|
||
MKSLOG_RED("SSID is %s", get_wifi_name.c_str());
|
||
MKSLOG_RED("PSK is %s", psk);
|
||
mks_set_ssid(const_cast<char*>(get_wifi_name.c_str()));
|
||
mks_set_psk(psk);
|
||
}
|
||
|
||
void clear_page_preview() {
|
||
file_metadata_filename = "";
|
||
file_metadata_estimated_time = 0;
|
||
file_metadata_filament_weight_total = 0;
|
||
file_metadata_filament_name = "";
|
||
file_metadata_filament_type = "";
|
||
file_metadata_simage = "";
|
||
file_metadata_gimage = "";
|
||
}
|
||
|
||
void set_mks_babystep(std::string value) {
|
||
mksini_load();
|
||
mksini_set("babystep", "value", value);
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void get_mks_babystep() {
|
||
mksini_load();
|
||
mks_babystep_value = mksini_getstring("babystep", "value", "0.000");
|
||
mks_adxl_offset = mksini_getstring("babystep", "adxl_offset", "0.000");
|
||
mksini_free();
|
||
}
|
||
|
||
void clear_cp0_image() {
|
||
send_cmd_cp_close(tty_fd, "preview.cp0");
|
||
send_cmd_txt(tty_fd, "preview.cp0_text", "");
|
||
send_cmd_txt(tty_fd, "preview.add", "");
|
||
show_preview_gimage_completed = false;
|
||
mks_file_parse_finished = false;
|
||
file_metadata_simage.clear();
|
||
file_metadata_gimage.clear();
|
||
}
|
||
|
||
void printer_set_babystep() {
|
||
get_mks_babystep();
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z=" + mks_babystep_value + " MOVE=0"));
|
||
}
|
||
|
||
int get_mks_fila_status() {
|
||
mksini_load();
|
||
mks_fila_status = mksini_getboolean("fila", "enable", 0);
|
||
mksini_free();
|
||
return mks_fila_status;
|
||
}
|
||
|
||
void set_mks_fila_status() {
|
||
mksini_load();
|
||
mksini_set("fila", "enable", std::to_string(mks_fila_status));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void init_mks_status() {
|
||
get_mks_total_printed_time();
|
||
get_mks_babystep();
|
||
get_mks_connection_method();
|
||
get_mks_ethernet();
|
||
// 不再使用xindi获取zoffset
|
||
// printer_set_babystep();
|
||
/*
|
||
if (get_mks_beep_status() == 0) {
|
||
MKSLOG_RED("关闭蜂鸣器");
|
||
if (get_mks_led_status() == 0) {
|
||
MKSLOG_BLUE("关掉LED灯");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=0\n"));
|
||
if (get_mks_fila_status() == 0) {
|
||
MKSLOG_BLUE("关掉断料检测");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=0\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=0\n"));
|
||
} else {
|
||
MKSLOG_BLUE("打开断料检测");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=0\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=1\n"));
|
||
}
|
||
} else {
|
||
MKSLOG_BLUE("打开LED灯");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=1\n"));
|
||
if (get_mks_fila_status() == 0) {
|
||
MKSLOG_BLUE("关掉断料检测");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=1\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=0\n"));
|
||
} else {
|
||
MKSLOG_BLUE("打开断料检测");
|
||
ep->Send(json_run_a_gcode("beep_off\nSET_PIN PIN=caselight VALUE=1\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=1\n"));
|
||
}
|
||
}
|
||
} else {
|
||
MKSLOG_RED("打开蜂鸣器");
|
||
if (get_mks_led_status() == 0) {
|
||
MKSLOG_BLUE("关掉LED灯");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=0\n"));
|
||
if (get_mks_fila_status() == 0) {
|
||
MKSLOG_BLUE("关掉断料检测");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=0\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=0\n"));
|
||
} else {
|
||
MKSLOG_BLUE("打开断料检测");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=0\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=1\n"));
|
||
}
|
||
} else {
|
||
MKSLOG_BLUE("打开LED灯");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=1\n"));
|
||
if (get_mks_fila_status() == 0) {
|
||
MKSLOG_BLUE("关掉断料检测");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=1\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=0\n"));
|
||
} else {
|
||
MKSLOG_BLUE("打开断料检测");
|
||
ep->Send(json_run_a_gcode("beep_on\nSET_PIN PIN=caselight VALUE=1\nSET_FILAMENT_SENSOR SENSOR=fila ENABLE=1\n"));
|
||
}
|
||
}
|
||
}
|
||
*/
|
||
}
|
||
|
||
int detect_disk() {
|
||
if (access("/dev/sda", F_OK) == 0) {
|
||
if (access("/dev/sda1", F_OK) == 0) {
|
||
if (access("/home/mks/gcode_files/sda1", F_OK) != 0) {
|
||
system("/usr/bin/systemctl --no-block restart makerbase-automount@sda1.service");
|
||
sleep(1);
|
||
}
|
||
}
|
||
return 0;
|
||
} else {
|
||
return -1;
|
||
}
|
||
}
|
||
|
||
void set_printing_shutdown() {
|
||
if (page_printing_shutdown_enable == false) {
|
||
page_printing_shutdown_enable = true;
|
||
} else {
|
||
page_printing_shutdown_enable = false;
|
||
}
|
||
}
|
||
|
||
void mks_get_version() {
|
||
mksversion_load();
|
||
mks_version_soc = mksversion_soc("V1.1.1");
|
||
mks_version_mcu = mksversion_mcu("V0.10.0");
|
||
mks_version_ui = mksversion_ui("V1.1.1");
|
||
mksversion_free();
|
||
}
|
||
|
||
void wifi_save_config() {
|
||
page_to(TJC_PAGE_WIFI_SAVING);
|
||
mks_save_config();
|
||
sleep(2);
|
||
get_wlan0_status();
|
||
}
|
||
|
||
void disable_page_about_successed() {
|
||
page_about_successed = true;
|
||
}
|
||
|
||
void finish_tjc_update() {
|
||
if (access("/root/800_480.tft", F_OK) == 0) {
|
||
system("mv /root/800_480.tft /root/800_480.tft.bak; sync");
|
||
}
|
||
}
|
||
|
||
void filament_load() {
|
||
send_cmd_vis(tty_fd, "b2", "0");
|
||
send_cmd_vis(tty_fd, "t4", "1");
|
||
send_cmd_vis(tty_fd, "b3", "0");
|
||
send_cmd_picc(tty_fd, "q0", "194");
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
send_cmd_pco(tty_fd, "t3", "38066");
|
||
send_cmd_vis(tty_fd, "gm1", "0");
|
||
send_cmd_vis(tty_fd, "gm2", "1");
|
||
printer_idle_timeout_state = "Printing";
|
||
ep->Send(json_run_a_gcode("M109 S" + std::to_string(load_target) + "\n"));
|
||
ep->Send(json_run_a_gcode("M604\n"));
|
||
}
|
||
|
||
void filament_unload() {
|
||
// send_cmd_vis(tty_fd, "b2", "0");
|
||
// send_cmd_vis(tty_fd, "t4", "1");
|
||
// send_cmd_vis(tty_fd, "b3", "0");
|
||
// send_cmd_picc(tty_fd, "q0", "194");
|
||
// send_cmd_pco(tty_fd, "t0", "65535");
|
||
// send_cmd_pco(tty_fd, "t3", "38066");
|
||
// send_cmd_vis(tty_fd, "gm1", "0");
|
||
// send_cmd_vis(tty_fd, "gm2", "1");
|
||
printer_idle_timeout_state = "Printing";
|
||
ep->Send(json_run_a_gcode("M109 S" + std::to_string(load_target) + "\n"));
|
||
ep->Send(json_run_a_gcode("M603\n"));
|
||
}
|
||
|
||
int get_cal_printed_time(int print_time) {
|
||
int printed_time = 0;
|
||
printed_time = print_time / 60;
|
||
return printed_time;
|
||
}
|
||
|
||
int get_mks_total_printed_time() {
|
||
mksini_load();
|
||
mks_total_printed_minutes = mksini_getint("total", "time", 0);
|
||
mksini_free();
|
||
return mks_total_printed_minutes;
|
||
}
|
||
|
||
void set_mks_total_printed_time(int printed_time) {
|
||
mksini_load();
|
||
std::cout << "######## " << printed_time << std::endl;
|
||
mksini_set("total", "time", std::to_string(printed_time));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void get_total_time() {
|
||
ep->Send(json_get_job_totals());
|
||
}
|
||
|
||
void do_not_x_clear() {
|
||
set_mks_total_printed_time(36000);
|
||
}
|
||
|
||
void do_x_clear() {
|
||
set_mks_total_printed_time(0);
|
||
}
|
||
|
||
void level_mode_printing_set_target() {
|
||
set_heater_bed_target(level_mode_printing_heater_bed_target);
|
||
ep->Send(json_run_a_gcode("M190 S" + std::to_string(level_mode_printing_heater_bed_target)));
|
||
set_extruder_target(level_mode_printing_extruder_target);
|
||
ep->Send(json_run_a_gcode("M109 S" + std::to_string(level_mode_printing_extruder_target)));
|
||
}
|
||
|
||
void level_mode_printing_print_file() {
|
||
start_printing("LEVEL_PRINTING.gcode");
|
||
}
|
||
|
||
void update_finished_tips() {
|
||
// page_to(TJC_PAGE_UPDATE_FINISH);
|
||
sleep(5);
|
||
system("sync");
|
||
system("systemctl restart makerbase-client.service");
|
||
}
|
||
|
||
bool get_mks_oobe_enabled() {
|
||
mksini_load();
|
||
mks_oobe_enabled = mksini_getboolean("oobe", "enable", 0);
|
||
mksini_free();
|
||
return mks_oobe_enabled;
|
||
}
|
||
|
||
void set_mks_oobe_enabled(bool enable) {
|
||
mksini_load();
|
||
mksini_set("oobe", "enable", std::to_string(enable));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void move_motors_off() {
|
||
ep->Send(json_run_a_gcode("M84\n"));
|
||
}
|
||
|
||
void open_more_level_finish() {
|
||
init_mks_status();
|
||
// ep->Send(json_run_a_gcode("G28\n"));
|
||
set_mks_oobe_enabled(false); // 完成关闭OOBE的操作
|
||
get_object_status();
|
||
page_to(TJC_PAGE_MAIN);
|
||
}
|
||
|
||
void open_move_tip() {
|
||
ep->Send(json_run_a_gcode("G91\nG1 Z-100 F600\nG1 X-100 Y-100 F1200\nG90"));
|
||
}
|
||
|
||
void open_set_print_filament_target() {
|
||
if (0 == printer_extruder_target) {
|
||
get_mks_extruder_target();
|
||
set_extruder_target(mks_extruder_target);
|
||
} else {
|
||
set_extruder_target(0);
|
||
}
|
||
}
|
||
|
||
void open_start_extrude() {
|
||
ep->Send(json_run_a_gcode("M83\nG1 E20 F300\n"));
|
||
}
|
||
|
||
void open_calibrate_start() {
|
||
step_1 = false; // CLL 当该值为true表示打印机已完成平台和喷嘴位置初始化
|
||
step_2 = false; // CLL 当该值为true表示打印机已完成采集补偿值
|
||
step_3 = false; // CLL 当该值为true表示打印机已完成共振补偿
|
||
printer_idle_timeout_state = "Printing";
|
||
page_to(TJC_PAGE_OPEN_CALIBRATE);
|
||
ep->Send(json_run_a_gcode("M4028")); // printer.cfg中文件自定义gcode "M4028"
|
||
}
|
||
|
||
void close_mcu_port() {
|
||
ep->Send(json_run_a_gcode("CLOSE_MCU_PORT\n"));
|
||
}
|
||
|
||
void oobe_set_intern_zoffset(float offset) {
|
||
oobe_printer_set_offset = offset;
|
||
}
|
||
|
||
void oobe_set_zoffset(bool positive) {
|
||
if (positive == true) {
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=+" + std::to_string(oobe_printer_set_offset) + " MOVE=1"));
|
||
} else {
|
||
ep->Send(json_run_a_gcode("SET_GCODE_OFFSET Z_ADJUST=-" + std::to_string(oobe_printer_set_offset) + " MOVE=1"));
|
||
}
|
||
}
|
||
|
||
void refresh_page_zoffset() {
|
||
std::string temp[5][5];
|
||
for (int i = 0; i < printer_bed_mesh_profiles_mks_mesh_params_y_count; i++) {
|
||
if (i == 5) {
|
||
break;
|
||
}
|
||
for (int j = 0; j < printer_bed_mesh_profiles_mks_mesh_params_x_count; j++) {
|
||
if (j == 5) {
|
||
break;
|
||
}
|
||
temp[i][j] = std::to_string(printer_bed_mesh_profiles_mks_points[i][j]);
|
||
temp[i][j] = temp[i][j].substr(0, temp[i][j].find(".") + 3);
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(5 * i + j), temp[i][j]);
|
||
}
|
||
}
|
||
}
|
||
|
||
void refresh_page_auto_heaterbed() {
|
||
send_cmd_txt(tty_fd, "t0", std::to_string(printer_heater_bed_temperature) + "/");
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_heater_bed_target));
|
||
if (printer_heater_bed_target > 0) {
|
||
send_cmd_picc(tty_fd, "b2", "106");
|
||
send_cmd_picc2(tty_fd, "b2", "105");
|
||
send_cmd_pco(tty_fd, "t0", "63488");
|
||
send_cmd_pco(tty_fd, "n0", "63488");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b2", "107");
|
||
send_cmd_picc2(tty_fd, "b2", "104");
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
send_cmd_pco(tty_fd, "n0", "65535");
|
||
}
|
||
}
|
||
|
||
void set_auto_level_heater_bed_target(bool positive) {
|
||
get_mks_heater_bed_target();
|
||
printer_auto_level_heater_bed_target = mks_heater_bed_target;
|
||
if (positive == true) {
|
||
printer_auto_level_heater_bed_target += 3;
|
||
}else {
|
||
printer_auto_level_heater_bed_target -= 3;
|
||
}
|
||
if (printer_auto_level_heater_bed_target >120) {
|
||
printer_auto_level_heater_bed_target =120;
|
||
}
|
||
if (printer_auto_level_heater_bed_target < 0) {
|
||
printer_auto_level_heater_bed_target = 0;
|
||
}
|
||
set_heater_bed_target(printer_auto_level_heater_bed_target);
|
||
set_mks_heater_bed_target(printer_auto_level_heater_bed_target);
|
||
}
|
||
|
||
void detect_error() {
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_PRINTING:
|
||
case TJC_PAGE_PRINT_ZOFFSET:
|
||
case TJC_PAGE_PRINT_FILAMENT:
|
||
case TJC_PAGE_PRINTING_2:
|
||
case TJC_PAGE_GCODE_ERROR:
|
||
case TJC_PAGE_LEVEL_ERROR:
|
||
case TJC_PAGE_DETECT_ERROR:
|
||
case TJC_PAGE_UPDATING:
|
||
break;
|
||
|
||
case TJC_PAGE_OPEN_CALIBRATE:
|
||
case TJC_PAGE_AUTO_MOVING:
|
||
ep->Send(json_run_a_gcode("RESTART"));
|
||
jump_to_level_error = true;
|
||
break;
|
||
|
||
default:
|
||
if (printer_webhooks_state != "shutdown" && printer_webhooks_state != "error") {
|
||
//4.1.5 新增息屏功能
|
||
if (previous_caselight_value == true) {
|
||
led_on_off();
|
||
previous_caselight_value = false;
|
||
}
|
||
jump_to_detect_error = true;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
void clear_previous_data() {
|
||
sdcard_reset_file();
|
||
clear_cp0_image();
|
||
clear_page_preview();
|
||
show_preview_complete = false;
|
||
printing_keyboard_enabled = false;
|
||
}
|
||
|
||
void print_start() {
|
||
if (printer_bed_leveling == true) {
|
||
ep->Send(json_run_a_gcode("G31\n"));
|
||
} else {
|
||
ep->Send(json_run_a_gcode("G32\n"));
|
||
}
|
||
}
|
||
|
||
void open_heater_bed_up() {
|
||
page_to(TJC_PAGE_OPEN_FILAMENTVIDEO_1);
|
||
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-30 F600\nG1 X-30 Y-30 F1200\nG90\nM84\n"));
|
||
}
|
||
|
||
void refresh_page_open_heaterbed() {
|
||
send_cmd_txt(tty_fd, "t0", std::to_string(printer_heater_bed_temperature) + "/");
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_heater_bed_target));
|
||
if (printer_heater_bed_target > 0) {
|
||
send_cmd_picc(tty_fd, "b0", "18");
|
||
send_cmd_picc2(tty_fd, "b0", "14");
|
||
send_cmd_pco(tty_fd, "t0", "63488");
|
||
send_cmd_pco(tty_fd, "n0", "63488");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b0", "15");
|
||
send_cmd_picc2(tty_fd, "b0", "13");
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
send_cmd_pco(tty_fd, "n0", "65535");
|
||
}
|
||
}
|
||
|
||
void bed_leveling_switch(bool positive) {
|
||
if (positive == true) {
|
||
ep->Send(json_run_a_gcode("G31"));
|
||
printer_bed_leveling = true;
|
||
}
|
||
if (positive == false) {
|
||
ep->Send(json_run_a_gcode("G32"));
|
||
printer_bed_leveling = false;
|
||
}
|
||
}
|
||
|
||
void save_current_zoffset() {
|
||
std::string z_offset = std::to_string(printer_gcode_move_homing_origin[2]);
|
||
z_offset = z_offset.substr(0, z_offset.find(".") + 4);
|
||
switch (current_page_id)
|
||
{
|
||
case TJC_PAGE_AUTO_MOVING:
|
||
case TJC_PAGE_OPEN_CALIBRATE:
|
||
printer_idle_timeout_state = "Printing";
|
||
float z;
|
||
get_mks_babystep();
|
||
z = std::stof(mks_babystep_value) + std::stof(mks_adxl_offset);
|
||
if (z > -5 && z < 5) { // CLL 仅保存-5~5的zoffset值
|
||
mks_babystep_value = std::to_string(z);
|
||
set_mks_babystep(mks_babystep_value);
|
||
MKSLOG_RED("当前zoffset值保存为%s",mks_babystep_value.c_str());
|
||
}
|
||
break;
|
||
|
||
default:
|
||
if (z_offset != mks_babystep_value && z_offset.find("0.000") != -1) {
|
||
if (std::stof(z_offset) > -5 && std::stof(z_offset) < 5) {
|
||
mks_babystep_value = z_offset;
|
||
set_mks_babystep(mks_babystep_value);
|
||
MKSLOG_RED("当前zoffset值保存为:%s",mks_babystep_value.c_str());
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
void refresh_page_filament_pop() {
|
||
send_cmd_txt(tty_fd, "t4", "(" + std::to_string(printer_extruder_temperature) + "/" + std::to_string(printer_extruder_target) + "℃)");
|
||
if (step_1 == true) {
|
||
step_1 = false;
|
||
send_cmd_picc(tty_fd, "q0", "195");
|
||
send_cmd_pco(tty_fd, "t1", "65535");
|
||
send_cmd_pco(tty_fd, "t0", "38066");
|
||
send_cmd_pco(tty_fd, "t4", "38066");
|
||
send_cmd_vis(tty_fd, "gm2", "0");
|
||
send_cmd_vis(tty_fd, "gm3", "1");
|
||
}
|
||
if (step_2 == true && printer_idle_timeout_state == "Ready") {
|
||
step_2 = false;
|
||
send_cmd_picc(tty_fd, "q0", "197");
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
send_cmd_pco(tty_fd, "t1", "38066");
|
||
send_cmd_vis(tty_fd, "b0", "1");
|
||
send_cmd_vis(tty_fd, "b1", "1");
|
||
send_cmd_vis(tty_fd, "gm3", "0");
|
||
}
|
||
}
|
||
|
||
void check_filament_type() {
|
||
std::string filament_type;
|
||
if (file_metadata_filament_type != "") {
|
||
filament_type = file_metadata_filament_type;
|
||
} else {
|
||
filament_type = file_metadata_filament_name;
|
||
}
|
||
std::transform(filament_type.begin(), filament_type.end(), filament_type.begin(), tolower);
|
||
MKSLOG_YELLOW("filament_type : %s",filament_type.c_str());
|
||
//4.4.1 CLL 耗材确认弹窗新增不再提示按钮
|
||
if ((filament_type.find("pla") != -1 || filament_type.find("petg") != -1) && preview_pop_1_on == true) {
|
||
page_to(TJC_PAGE_PREVIEW_POP_1);
|
||
}else if (filament_type.find("abs") != -1 && preview_pop_2_on == true) {
|
||
page_to(TJC_PAGE_PREVIEW_POP_2);
|
||
}else {
|
||
page_to(TJC_PAGE_PRINTING);
|
||
}
|
||
}
|
||
|
||
void refresh_page_preview_pop() {
|
||
//4.4.2 使mates与霍尔耗材宽度探测器适配
|
||
if (filament_detected == false) {
|
||
sleep(1);
|
||
set_print_pause();
|
||
page_to(TJC_PAGE_PRINT_NO_FILAMENT);
|
||
}
|
||
if (printer_print_stats_state == "standby") {
|
||
page_to(TJC_PAGE_PRINT_STOPPING);
|
||
}
|
||
if (printer_print_stats_state == "error") {
|
||
page_to(TJC_PAGE_GCODE_ERROR);
|
||
cancel_print();
|
||
clear_previous_data();
|
||
send_cmd_txt(tty_fd, "t0", "gcode error:" + error_message);
|
||
}
|
||
}
|
||
|
||
std::string replaceCharacters(const std::string& path, const std::string& searchChars, const std::string& replacement) {
|
||
std::string result = path;
|
||
for (char c : searchChars) {
|
||
std::size_t found = result.find(c);
|
||
while (found != std::string::npos) {
|
||
result.replace(found, 1, replacement);
|
||
found = result.find(c, found + replacement.length());
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
//4.4.2 使mates适配霍尔宽度检测器
|
||
void check_filament_width() {
|
||
if (filament_message.find("// Filament dia (measured mm):") != -1) {
|
||
float filament_width = std::stof(filament_message.substr(31));
|
||
MKSLOG("耗材宽度:%f",filament_width);
|
||
if (filament_width < 0.3){
|
||
filament_detected = false;
|
||
} else {
|
||
filament_detected = true;
|
||
}
|
||
} else if (filament_message.find("// Filament NOT present") != -1 || filament_message.find("echo: Filament run out") != -1) {
|
||
filament_detected = false;
|
||
}
|
||
}
|
||
|
||
//4.4.2 CLL 新增刷新文件列表函数
|
||
void refresh_page_files_list_2() {
|
||
if (file_mode == "USB") {
|
||
if (detect_disk() == -1) {
|
||
file_mode = "NULL";
|
||
page_to(TJC_PAGE_FILE_LIST);
|
||
page_files_pages = 0;
|
||
page_files_current_pages = 0;
|
||
page_files_folder_layers = 1;
|
||
page_files_previous_path = "";
|
||
page_files_root_path = "gcodes/";
|
||
page_files_path = "/sda1";
|
||
refresh_page_files(page_files_current_pages);
|
||
refresh_page_files_list();
|
||
get_object_status();
|
||
}
|
||
} else if (file_mode == "NULL") {
|
||
if (detect_disk() == 0) {
|
||
sleep(1);
|
||
file_mode ="USB";
|
||
page_to(TJC_PAGE_FILE_LIST);
|
||
page_files_pages = 0;
|
||
page_files_current_pages = 0;
|
||
page_files_folder_layers = 1;
|
||
page_files_previous_path = "";
|
||
page_files_root_path = "gcodes/";
|
||
page_files_path = "/sda1";
|
||
refresh_page_files(page_files_current_pages);
|
||
refresh_page_files_list();
|
||
get_object_status();
|
||
}
|
||
}
|
||
}
|
||
|
||
void go_to_update() {
|
||
get_mks_connection_method();
|
||
page_to(TJC_PAGE_UPDATE_MODE);
|
||
send_cmd_txt(tty_fd, "t1", mks_version_soc);
|
||
if (connection_method == 0)
|
||
send_cmd_vis(tty_fd, "b2", "0");
|
||
}
|
||
|
||
void restore_config() {
|
||
system("rm /home/mks/gcode_files/.cache/*");
|
||
main_picture_refreshed = false;
|
||
system("curl -X POST http://127.0.0.1:7125/server/history/reset_totals");
|
||
system("curl -X DELETE 'http://127.0.0.1:7125/server/history/job?all=true'");
|
||
system("cp /root/config.mksini /home/mks/klipper_config/config.mksini");
|
||
system("cp /home/mks/klipper_config/saved_variables.cfg.bak /home/mks/klipper_config/saved_variables.cfg");
|
||
ep->Send(json_run_a_gcode("SAVE_VARIABLE VARIABLE=z_offset VALUE=0"));
|
||
page_to(TJC_PAGE_MAIN);
|
||
}
|
||
|
||
void refresh_page_bed_moving() {
|
||
if (printer_idle_timeout_state == "Ready") {
|
||
if (manual_count == 3) {
|
||
page_to(TJC_PAGE_PRE_BED_CALIBRATION);
|
||
} else if (manual_count == -2) {
|
||
page_to(TJC_PAGE_BED_FINISH);
|
||
} else {
|
||
page_to(TJC_PAGE_BED_CALIBRATION);
|
||
}
|
||
}
|
||
}
|
||
|
||
void bed_calibrate() {
|
||
if (manual_count == 4) {
|
||
bed_offset = 0;
|
||
printer_idle_timeout_state = "Printing";
|
||
ep->Send(json_run_a_gcode("ABORT\n"));
|
||
ep->Send(json_run_a_gcode("M4030"));
|
||
page_to(TJC_PAGE_BED_MOVING);
|
||
}else if (manual_count == 3) {
|
||
printer_idle_timeout_state = "Printing";
|
||
ep->Send(json_run_a_gcode("G1 Z10 F600"));
|
||
ep->Send(json_run_a_gcode("BED_SCREWS_ADJUST\n"));
|
||
ep->Send(json_run_a_gcode("G1 Z" + std::to_string(bed_offset) + " F600\n"));
|
||
MKSLOG_BLUE("当前bed_offset:%f", bed_offset);
|
||
page_to(TJC_PAGE_BED_MOVING);
|
||
} else if (manual_count > 0) {
|
||
printer_idle_timeout_state = "Printing";
|
||
ep->Send(json_run_a_gcode("ACCEPT\n"));
|
||
ep->Send(json_run_a_gcode("G1 Z" + std::to_string(bed_offset) + " F600\n"));
|
||
page_to(TJC_PAGE_BED_MOVING);
|
||
} else if (manual_count == 0) {
|
||
ep->Send(json_run_a_gcode("ACCEPT\n"));
|
||
ep->Send(json_run_a_gcode("G1 Z10 F600\nG1 X0 Y0 F9000\n"));
|
||
init_mks_status();
|
||
page_to(TJC_PAGE_BED_FINISH);
|
||
} else {
|
||
ep->Send(json_run_a_gcode("G1 Z10 F600\n"));
|
||
page_to(TJC_PAGE_BED_FINISH);
|
||
}
|
||
manual_count--;
|
||
}
|
||
|
||
void bed_adjust(bool status) {
|
||
if (status == true) {
|
||
ep->Send(json_run_a_gcode("G91\nG1 Z" + std::to_string(-auto_level_dist) + " F600\nG90\n"));
|
||
bed_offset = bed_offset - auto_level_dist;
|
||
MKSLOG_BLUE("当前bed_offset:%f", bed_offset);
|
||
} else if (status == false) {
|
||
ep->Send(json_run_a_gcode("G91\nG1 Z" + std::to_string(auto_level_dist) + " F600\nG90\n"));
|
||
bed_offset = bed_offset + auto_level_dist;
|
||
MKSLOG_BLUE("当前bed_offset:%f", bed_offset);
|
||
}
|
||
}
|
||
|
||
void go_to_file_list() {
|
||
if (file_mode == "Local") {
|
||
page_to(TJC_PAGE_FILE_LIST);
|
||
page_files_pages = 0;
|
||
page_files_current_pages = 0;
|
||
page_files_folder_layers = 0;
|
||
page_files_previous_path = "";
|
||
page_files_root_path = DEFAULT_DIR;
|
||
page_files_path = "";
|
||
refresh_page_files(page_files_current_pages);
|
||
refresh_page_files_list();
|
||
get_object_status();
|
||
} else {
|
||
page_to(TJC_PAGE_FILE_LIST);
|
||
page_files_pages = 0;
|
||
page_files_current_pages = 0;
|
||
page_files_folder_layers = 1;
|
||
page_files_previous_path = "";
|
||
page_files_root_path = DEFAULT_DIR;
|
||
page_files_path = "/sda1";
|
||
refresh_page_files(page_files_current_pages);
|
||
refresh_page_files_list();
|
||
get_object_status();
|
||
}
|
||
}
|
||
|
||
void send_gcode(std::string command) {
|
||
ep->Send(json_run_a_gcode(command));
|
||
}
|
||
|
||
void refresh_page_open_calibrate() {
|
||
if (step_3 == true) {
|
||
step_3 = false;
|
||
system("sync"); // CLL 保存系统信息后跳转至装料页面
|
||
sleep(10);
|
||
get_object_status();
|
||
sub_object_status();
|
||
page_to(TJC_PAGE_OPEN_FILAMENTVIDEO_0);
|
||
}
|
||
if (step_2 == true && printer_webhooks_state == "ready") {
|
||
step_2 = false;
|
||
send_cmd_picc(tty_fd, "q0", "21");
|
||
send_cmd_pco(tty_fd, "t3", "65535");
|
||
sleep(5);
|
||
ep->Send(json_run_a_gcode("M901")); // CLL 平台调平完成后进行共振补偿
|
||
}
|
||
if (step_1 == true && printer_idle_timeout_state == "Ready") {
|
||
step_1 = false;
|
||
send_cmd_picc(tty_fd, "q0", "20");
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
get_mks_heater_bed_target();
|
||
set_heater_bed_target(mks_heater_bed_target);
|
||
ep->Send(json_run_a_gcode("M190 S" + std::to_string(mks_heater_bed_target) + "\n"));
|
||
sleep(5);
|
||
ep->Send(json_run_a_gcode("M4027")); // CLL 平台和喷嘴位置初始化完成后进行调平
|
||
}
|
||
}
|
||
|
||
void refresh_page_filament_set_fan() {
|
||
if (move_fan_setting == false) { // CLL 当检测到风扇滑块未被按下时执行刷新函数
|
||
send_cmd_val(tty_fd, "h0", std::to_string((int)(printer_out_pin_fan0_value * 100)));
|
||
send_cmd_val(tty_fd, "n0", std::to_string((int)(printer_out_pin_fan0_value * 100)));
|
||
send_cmd_val(tty_fd, "h1", std::to_string((int)(printer_out_pin_fan2_value * 100)));
|
||
send_cmd_val(tty_fd, "n1", std::to_string((int)(printer_out_pin_fan2_value * 100)));
|
||
send_cmd_val(tty_fd, "h2", std::to_string((int)(printer_out_pin_fan3_value * 100)));
|
||
send_cmd_val(tty_fd, "n2", std::to_string((int)(printer_out_pin_fan3_value * 100)));
|
||
if (printer_out_pin_fan0_value == 0) {
|
||
send_cmd_picc(tty_fd, "b0", "201");
|
||
send_cmd_picc2(tty_fd, "b0", "199");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b0", "202");
|
||
send_cmd_picc2(tty_fd, "b0", "200");
|
||
}
|
||
|
||
if (printer_out_pin_fan2_value == 0) {
|
||
send_cmd_picc(tty_fd, "b1", "201");
|
||
send_cmd_picc2(tty_fd, "b1", "199");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b1", "202");
|
||
send_cmd_picc2(tty_fd, "b1", "200");
|
||
}
|
||
|
||
if (printer_out_pin_fan3_value == 0) {
|
||
send_cmd_picc(tty_fd, "b2", "201");
|
||
send_cmd_picc2(tty_fd, "b2", "199");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b2", "202");
|
||
send_cmd_picc2(tty_fd, "b2", "200");
|
||
}
|
||
}
|
||
}
|
||
|
||
// CLL 记住上次进入调整页面时的选择
|
||
void go_to_adjust() {
|
||
if (adjust_mode == "Filament") {
|
||
page_to(TJC_PAGE_FILAMENT);
|
||
} else {
|
||
page_to(TJC_PAGE_MOVE);
|
||
}
|
||
}
|
||
void go_to_setting() {
|
||
if (set_mode == "Level_mode") {
|
||
page_to(TJC_PAGE_LEVEL_MODE);
|
||
} else {
|
||
page_to(TJC_PAGE_COMMON_SETTING);
|
||
}
|
||
}
|
||
|
||
void refresh_page_common_setting() {
|
||
current_mks_oobe_enabled = get_mks_oobe_enabled();
|
||
send_cmd_txt(tty_fd, "t7", mks_version_soc);
|
||
if (current_mks_oobe_enabled == false) {
|
||
send_cmd_picc(tty_fd, "b6", "137");
|
||
send_cmd_picc2(tty_fd, "b6", "135");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b6", "138");
|
||
send_cmd_picc2(tty_fd, "b6", "136");
|
||
send_cmd_txt(tty_fd, "t6", "开机引导");
|
||
}
|
||
}
|
||
|
||
// CLL 该函数用于执行导出日志操作
|
||
void print_log() {
|
||
if (detect_disk() == -1) {
|
||
page_to(TJC_PAGE_PRINT_LOG_F); // CLL 若U盘未插入,提示导出失败,请客户检查U盘插入
|
||
} else {
|
||
system("mkdir /home/mks/gcode_files/sda1/QD_Log");
|
||
system("bash -c 'cp /home/mks/klipper_logs/klippy.log* /home/mks/gcode_files/sda1/QD_Log/'");
|
||
system("bash -c 'cp /home/mks/klipper_logs/moonraker.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("cp /root/frp/frpc.toml /home/mks/gcode_files/sda1/QD_Log/server.cfg");
|
||
page_to(TJC_PAGE_PRINT_LOG_S);
|
||
}
|
||
}
|
||
|
||
void refresh_files_list_picture(std::string path, int pixel, int i) {
|
||
file_metadata_simage.clear();
|
||
file_metadata_gimage.clear();
|
||
mks_file_parse_finished = false;
|
||
output_imgdata(path, pixel);
|
||
std::ifstream infile("/home/mks/tjc"); // 打开文件
|
||
if (!infile) {
|
||
std::cerr << "无法打开文件 " << "/home/mks/tjc" << std::endl;
|
||
show_preview_complete = true;
|
||
return;
|
||
}
|
||
std::stringstream buffer;
|
||
buffer << infile.rdbuf();
|
||
file_metadata_gimage = buffer.str();
|
||
infile.close();
|
||
send_cmd_baud(tty_fd, 921600);
|
||
//usleep(50000);
|
||
usleep(10000);
|
||
set_option(tty_fd, 921600, 8, 'N', 1);
|
||
send_cmd_cp_close(tty_fd, "cp"+std::to_string(i));
|
||
if (file_metadata_gimage != "") {
|
||
std::cout << "刷文件图" << std::endl;
|
||
int num = 2048;
|
||
int len = file_metadata_gimage.length();
|
||
int end = num;
|
||
std::string g;
|
||
for (int start = 0; start < len;) {
|
||
if (end > len) {
|
||
g = file_metadata_gimage.substr(start, len - start);
|
||
tcdrain(tty_fd);
|
||
send_cmd_cp_image(tty_fd, "cp" + std::to_string(i), g);
|
||
break;
|
||
}
|
||
g = file_metadata_gimage.substr(start, num);
|
||
start = end;
|
||
end = end + num;
|
||
tcdrain(tty_fd);
|
||
send_cmd_cp_image(tty_fd, "cp" + std::to_string(i), g);
|
||
}
|
||
}
|
||
send_cmd_baud(tty_fd, 115200);
|
||
//usleep(50000);
|
||
usleep(10000);
|
||
set_option(tty_fd, 115200, 8, 'N', 1);
|
||
send_cmd_vis(tty_fd, "cp" + std::to_string(i), "1");
|
||
}
|
||
|
||
std::string input_path;
|
||
int input_size;
|
||
bool start_path = false;
|
||
void refresh_files_list_picture_2(std::string path, int size, int i) {
|
||
input_path = path;
|
||
input_size = size;
|
||
begin_show_64_jpg = true;
|
||
}
|
||
|
||
int refresh_files_list_picture_3(const char *inputPath, int size, int i) {
|
||
return 0;
|
||
}
|
||
|
||
void refresh_page_filament() {
|
||
send_cmd_txt(tty_fd, "t0", std::to_string(printer_extruder_temperature));
|
||
send_cmd_val(tty_fd, "n0", std::to_string(printer_extruder_target));
|
||
send_cmd_txt(tty_fd, "t1", std::to_string(printer_heater_bed_temperature));
|
||
send_cmd_val(tty_fd, "n1", std::to_string(printer_heater_bed_target));
|
||
send_cmd_txt(tty_fd, "t2", std::to_string(printer_hot_temperature));
|
||
send_cmd_val(tty_fd, "n2", std::to_string(printer_hot_target));
|
||
if (printer_extruder_target > 0) {// CLL 根据喷头是否加热改变按钮显示状态
|
||
send_cmd_picc(tty_fd, "b2", "177");
|
||
send_cmd_picc2(tty_fd, "b2", "174");
|
||
send_cmd_picc(tty_fd, "b0", "177");
|
||
send_cmd_picc2(tty_fd, "b0", "174");
|
||
send_cmd_pco(tty_fd, "t0", "63488");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b2", "176");
|
||
send_cmd_picc2(tty_fd, "b2", "175");
|
||
send_cmd_picc(tty_fd, "b0", "176");
|
||
send_cmd_picc2(tty_fd, "b0", "175");
|
||
send_cmd_pco(tty_fd, "t0", "65535");
|
||
}
|
||
|
||
if (printer_heater_bed_target > 0) { // CLL 根据热床是否加热改变按钮显示状态
|
||
send_cmd_picc(tty_fd, "b3", "177");
|
||
send_cmd_picc2(tty_fd, "b3", "174");
|
||
send_cmd_picc(tty_fd, "b1", "177");
|
||
send_cmd_picc2(tty_fd, "b1", "174");
|
||
send_cmd_pco(tty_fd, "t1", "63488");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b3", "176");
|
||
send_cmd_picc2(tty_fd, "b3", "175");
|
||
send_cmd_picc(tty_fd, "b1", "176");
|
||
send_cmd_picc2(tty_fd, "b1", "175");
|
||
send_cmd_pco(tty_fd, "t1", "65535");
|
||
}
|
||
|
||
if (printer_hot_target > 0) {
|
||
send_cmd_picc(tty_fd, "b12", "177");
|
||
send_cmd_picc2(tty_fd, "b12", "174");
|
||
send_cmd_picc(tty_fd, "b13", "177");
|
||
send_cmd_picc2(tty_fd, "b13", "174");
|
||
send_cmd_pco(tty_fd, "t2", "63488");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b12", "176");
|
||
send_cmd_picc2(tty_fd, "b12", "175");
|
||
send_cmd_picc(tty_fd, "b13", "176");
|
||
send_cmd_picc2(tty_fd, "b13", "175");
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
}
|
||
|
||
if (printer_filament_extruedr_dist == 10) {
|
||
send_cmd_picc(tty_fd, "b9", "177");
|
||
send_cmd_picc2(tty_fd, "b9", "174");
|
||
send_cmd_picc(tty_fd, "b10", "176");
|
||
send_cmd_picc2(tty_fd, "b10", "175");
|
||
send_cmd_picc(tty_fd, "b11", "176");
|
||
send_cmd_picc2(tty_fd, "b11", "175");
|
||
} else if (printer_filament_extruedr_dist == 50) {
|
||
send_cmd_picc(tty_fd, "b9", "176");
|
||
send_cmd_picc2(tty_fd, "b9", "175");
|
||
send_cmd_picc(tty_fd, "b10", "177");
|
||
send_cmd_picc2(tty_fd, "b10", "174");
|
||
send_cmd_picc(tty_fd, "b11", "176");
|
||
send_cmd_picc2(tty_fd, "b11", "175");
|
||
} else if (printer_filament_extruedr_dist == 100) {
|
||
send_cmd_picc(tty_fd, "b9", "176");
|
||
send_cmd_picc2(tty_fd, "b9", "175");
|
||
send_cmd_picc(tty_fd, "b10", "176");
|
||
send_cmd_picc2(tty_fd, "b10", "175");
|
||
send_cmd_picc(tty_fd, "b11", "177");
|
||
send_cmd_picc2(tty_fd, "b11", "174");
|
||
}
|
||
}
|
||
|
||
void get_mks_connection_method() {
|
||
mksini_load();
|
||
connection_method = mksini_getint("app_connection", "method", 0);
|
||
mksini_free();
|
||
}
|
||
|
||
void set_mks_connection_method(int target) {
|
||
qr_refreshed = false;
|
||
mksini_load();
|
||
std::cout << "######## " << target << std::endl;
|
||
mksini_set("app_connection", "method", std::to_string(target));
|
||
mksini_save();
|
||
mksini_free();
|
||
system("sync");
|
||
}
|
||
|
||
void refresh_page_show_qr() {
|
||
if (mks_ethernet == 0) {
|
||
send_cmd_txt(tty_fd, "t0", status_result.ip_address);
|
||
send_cmd_picc(tty_fd, "b4", "268");
|
||
send_cmd_picc2(tty_fd, "b4", "214");
|
||
} else {
|
||
std::string local_ip = get_eth0_ip();
|
||
send_cmd_txt(tty_fd, "t0", local_ip);
|
||
send_cmd_picc(tty_fd, "b4", "269");
|
||
send_cmd_picc2(tty_fd, "b4", "215");
|
||
}
|
||
}
|
||
|
||
void go_to_showqr() {
|
||
std::string qrmessage;
|
||
get_mks_connection_method();
|
||
page_to(TJC_PAGE_SHOW_QR);
|
||
if (strcmp(status_result.wpa_state, "COMPLETED") == 0 || mks_ethernet) {
|
||
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)
|
||
qrmessage = run_python_code("python3 /home/mks/qrcode/qrcode_QD.py 176\n");
|
||
std::cout << "qrmessage:" << qrmessage << std::endl;
|
||
if (qrmessage.find("Missing or invalid") != -1) {
|
||
send_cmd_txt(tty_fd, "t4", qrmessage);
|
||
send_cmd_vis(tty_fd, "t4", "1");
|
||
} else if (qrmessage.find("No") != -1) {
|
||
send_cmd_vis(tty_fd, "t4", "1");
|
||
} else {
|
||
open_qr_refreshed = true;
|
||
refresh_files_list_picture("/home/mks/qrcode/qrcode.jpg", 176, 0);
|
||
qr_refreshed = true;
|
||
}
|
||
}
|
||
} else {
|
||
send_cmd_vis(tty_fd, "t4", "1");
|
||
send_cmd_cp_close(tty_fd, "cp0");
|
||
}
|
||
}
|
||
|
||
void get_mks_selected_server() {
|
||
mksini_load();
|
||
selected_server = mksini_getstring("app_server", "name", "");
|
||
mksini_free();
|
||
std::cout << selected_server << std::endl;
|
||
}
|
||
|
||
void go_to_server_set(int n) {
|
||
current_server_page = n;
|
||
total_server_count = 0;
|
||
serverConfigs.clear();
|
||
if (connection_method == 1 && strcmp(status_result.wpa_state, "COMPLETED") == 0) {
|
||
page_to(TJC_PAGE_SEARCH_SERVER);
|
||
update_server(0);
|
||
get_mks_selected_server();
|
||
get_mks_connection_method();
|
||
}
|
||
page_to(TJC_PAGE_SERVER_SET);
|
||
}
|
||
|
||
void updateServerConfig(std::vector<std::string> &lines, const Server_config &config)
|
||
{
|
||
for (size_t i = 0; i < lines.size(); ++i)
|
||
{
|
||
if (lines[i] == "[app_server]")
|
||
{
|
||
// 检查是否已经到达文件末尾
|
||
if (i + 1 < lines.size())
|
||
{
|
||
// 直接更新下一行,无需考虑空格数量
|
||
lines[i + 1] = "name = " + config.name;
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 如果没有找到[app_server]节,就在文件末尾添加
|
||
lines.push_back("[app_server]");
|
||
lines.push_back("name = " + config.name);
|
||
}
|
||
|
||
void update_server(int choice)
|
||
{
|
||
// CLL 连接服务器获取json文件
|
||
if (choice == 0) {
|
||
// 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 {
|
||
qr_refreshed = false; // CLL 当choice不为0时,该函数用于切换服务器,需要重新刷新二维码
|
||
}
|
||
|
||
total_server_count = 0;
|
||
const std::string FRPC_CONFIG_PATH = "/root/frp/frpc.toml";
|
||
const std::string MKSCONFIG_PATH = "/home/mks/klipper_config/config.mksini";
|
||
const std::string SERVER_LIST_PATH = "/root/frp/server_list.json"; // JSON 文件路径
|
||
|
||
try {
|
||
// 读取 JSON 文件并解析为服务器配置
|
||
std::ifstream jsonFile(SERVER_LIST_PATH);
|
||
nlohmann::json serverList;
|
||
jsonFile >> serverList;
|
||
jsonFile.close();
|
||
|
||
for (const auto& item : serverList.items())
|
||
{
|
||
const std::string &key = item.key();
|
||
const auto &value = item.value();
|
||
|
||
int id = std::stoi(key);
|
||
Server_config config = {value["address"], value["name"]};
|
||
std::cout << id << ":" << config.name << std::endl;
|
||
serverConfigs[id] = config;
|
||
total_server_count++;
|
||
}
|
||
}
|
||
catch(const std::exception& e)
|
||
{
|
||
std::cerr << "fail_to_read:" << e.what() << '\n';
|
||
}
|
||
|
||
if (choice != 0) {
|
||
if (serverConfigs.find(choice) == serverConfigs.end())
|
||
{
|
||
std::cout << "Invalid choice. Please enter a valid option.\n";
|
||
return;
|
||
}
|
||
|
||
Server_config config = serverConfigs[choice];
|
||
|
||
// 停止frpc.service
|
||
std::cout << "Stopping frpc.service...\n";
|
||
system("sudo systemctl stop frpc.service");
|
||
|
||
// 更新frpc.toml
|
||
std::ifstream frpcIn(FRPC_CONFIG_PATH);
|
||
std::stringstream buffer;
|
||
buffer << frpcIn.rdbuf();
|
||
std::string content = buffer.str();
|
||
frpcIn.close();
|
||
|
||
size_t pos = content.find("serverAddr = ");
|
||
if (pos != std::string::npos)
|
||
{
|
||
size_t endPos = content.find('\n', pos);
|
||
content.replace(pos, endPos - pos, "serverAddr = \"" + config.address + "\"");
|
||
}
|
||
|
||
std::ofstream frpcOut(FRPC_CONFIG_PATH);
|
||
frpcOut << content;
|
||
frpcOut.close();
|
||
|
||
// 读取config.mksini到vector中
|
||
std::vector<std::string> lines;
|
||
std::ifstream mksIn(MKSCONFIG_PATH);
|
||
std::string line;
|
||
while (getline(mksIn, line))
|
||
{
|
||
lines.push_back(line);
|
||
}
|
||
mksIn.close();
|
||
|
||
// 更新app_server配置
|
||
updateServerConfig(lines, config);
|
||
|
||
// 将更新后的内容写回config.mksini
|
||
std::ofstream mksOut(MKSCONFIG_PATH);
|
||
for (const auto &outputLine : lines)
|
||
{
|
||
mksOut << outputLine << std::endl;
|
||
}
|
||
mksOut.close();
|
||
|
||
// 重启frpc.service
|
||
std::cout << "Starting frpc.service...\n";
|
||
system("sudo systemctl start frpc.service");
|
||
|
||
std::cout << "Configuration updated to " << config.name << " successfully.\n";
|
||
get_mks_selected_server();
|
||
}
|
||
}
|
||
|
||
void refresh_page_server_set() {
|
||
if (connection_method == 0 || strcmp(status_result.wpa_state, "COMPLETED") != 0) {
|
||
send_cmd_picc(tty_fd, "b2", "217");
|
||
send_cmd_picc2(tty_fd, "b2", "220");
|
||
send_cmd_vis(tty_fd, "t3", "1");
|
||
send_cmd_vis(tty_fd, "t0", "0");
|
||
send_cmd_vis(tty_fd, "b3", "0");
|
||
send_cmd_vis(tty_fd, "b4", "0");
|
||
send_cmd_vis(tty_fd, "b0", "0");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b2", "218");
|
||
send_cmd_picc2(tty_fd, "b2", "219");
|
||
send_cmd_vis(tty_fd, "t3", "0");
|
||
send_cmd_vis(tty_fd, "t0", "1");
|
||
send_cmd_vis(tty_fd, "b3", "1");
|
||
send_cmd_vis(tty_fd, "b4", "1");
|
||
send_cmd_vis(tty_fd, "b0", "1");
|
||
|
||
}
|
||
|
||
if (current_server_page == 0) {
|
||
send_cmd_picc(tty_fd, "b3", "218");
|
||
send_cmd_picc2(tty_fd, "b3", "219");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b3", "217");
|
||
send_cmd_picc2(tty_fd, "b3", "220");
|
||
}
|
||
|
||
if ((current_server_page + 1) * 4 >= total_server_count) {
|
||
send_cmd_picc(tty_fd, "b4", "218");
|
||
send_cmd_picc2(tty_fd, "b4", "219");
|
||
} else {
|
||
send_cmd_picc(tty_fd, "b4", "217");
|
||
send_cmd_picc2(tty_fd, "b4", "220");
|
||
}
|
||
for (int i = 0; i < 4; i++) {
|
||
if (i + current_server_page * 4 + 1 > total_server_count)
|
||
break;
|
||
send_cmd_txt(tty_fd, "t" + std::to_string(i + 5), serverConfigs[1 + i + current_server_page * 4].name);
|
||
if (selected_server == serverConfigs[1 + i + current_server_page * 4].name) {
|
||
std::cout << "selected_server:" << serverConfigs[i + 1 + current_server_page * 4].name << std::endl;
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i + 5), "217");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i + 5), "219");
|
||
} else {
|
||
std::cout << "unselected_server:" << serverConfigs[i + 1 + current_server_page * 4].name << std::endl;
|
||
send_cmd_picc(tty_fd, "b" + std::to_string(i + 5), "218");
|
||
send_cmd_picc2(tty_fd, "b" + std::to_string(i + 5), "220");
|
||
}
|
||
}
|
||
}
|
||
|
||
void local_update () {
|
||
ep->Send(json_get_klippy_host_information());
|
||
if (detect_update()) {
|
||
page_to(TJC_PAGE_UPDATE_FOUND);
|
||
} else {
|
||
page_to(TJC_PAGE_UPDATE_NOT_FOUND);
|
||
}
|
||
}
|
||
|
||
// CLL 此函数用于调用系统函数后接收返回值
|
||
std::string run_python_code(const char* cmd) {
|
||
std::array<char, 128> buffer;
|
||
std::string result;
|
||
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
|
||
if (!pipe) {
|
||
throw std::runtime_error("popen() failed!");
|
||
}
|
||
while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
|
||
result += buffer.data();
|
||
}
|
||
return result;
|
||
}
|
||
|
||
void check_online_version() {
|
||
page_to(TJC_PAGE_SEARCH_SERVER);
|
||
if (connection_method == 0)
|
||
return;
|
||
target_soc_version = run_python_code("python3 /root/auto_update/version_check.py");
|
||
std::cout << "服务器版本:" << target_soc_version << std::endl;
|
||
if (target_soc_version.find("0") == 0) {
|
||
page_to(TJC_PAGE_UPDATE_MODE);
|
||
send_cmd_vis(tty_fd, "t2", "1");
|
||
send_cmd_vis(tty_fd, "t3", "0");
|
||
} else if (target_soc_version.find("-1") == 0) {
|
||
page_to(TJC_PAGE_UPDATE_MODE);
|
||
send_cmd_vis(tty_fd, "t3", "1");
|
||
send_cmd_vis(tty_fd, "t2", "0");
|
||
} else {
|
||
page_to(TJC_PAGE_ONLINE_UPDATE);
|
||
send_cmd_txt(tty_fd, "t1", mks_version_soc);
|
||
send_cmd_txt(tty_fd, "t2", target_soc_version);
|
||
updateini_load();
|
||
std::string cn_info = mksini_getstring("cn", "content", "NULL"); // CLL 获取中文更新说明
|
||
std::string ru_info = mksini_getstring("ru", "content", "NULL"); // CLL 获取俄语更新说明
|
||
std::string en_info = mksini_getstring("en", "content", "NULL"); // CLL 获取英语更新说明
|
||
std::string jp_info = mksini_getstring("jp", "content", "NULL"); // CLL 获取日语更新说明
|
||
std::string fr_info = mksini_getstring("fr", "content", "NULL"); // CLL 获取法语更新说明
|
||
std::string gr_info = mksini_getstring("gr", "content", "NULL"); // CLL 获取德语更新说明
|
||
std::string it_info = mksini_getstring("it", "content", "NULL"); // CLL 获取意大利语更新说明
|
||
std::string sp_info = mksini_getstring("sp", "content", "NULL"); // CLL 获取西班牙语更新说明
|
||
std::string kr_info = mksini_getstring("kr", "content", "NULL"); // CLL 获取韩语更新说明
|
||
std::string pr_info = mksini_getstring("pr", "content", "NULL"); // CLL 获取葡萄牙语更新说明
|
||
std::string ar_info = mksini_getstring("ar", "content", "NULL"); // CLL 获取阿拉伯语更新说明
|
||
std::string tr_info = mksini_getstring("tr", "content", "NULL"); // CLL 获取土耳其语更新说明
|
||
std::string hb_info = mksini_getstring("hb", "content", "NULL"); // CLL 获取希伯来语更新说明
|
||
send_cmd_txt(tty_fd, "t_cn", cn_info);
|
||
send_cmd_txt(tty_fd, "t_ru", ru_info);
|
||
send_cmd_txt(tty_fd, "t_en", en_info);
|
||
send_cmd_txt(tty_fd, "t_jp", jp_info);
|
||
send_cmd_txt(tty_fd, "t_fr", fr_info);
|
||
send_cmd_txt(tty_fd, "t_gr", gr_info);
|
||
send_cmd_txt(tty_fd, "t_it", it_info);
|
||
send_cmd_txt(tty_fd, "t_sp", sp_info);
|
||
send_cmd_txt(tty_fd, "t_kr", kr_info);
|
||
send_cmd_txt(tty_fd, "t_pr", pr_info);
|
||
send_cmd_txt(tty_fd, "t_ar", ar_info);
|
||
send_cmd_txt(tty_fd, "t_tr", tr_info);
|
||
send_cmd_txt(tty_fd, "t_hb", hb_info);
|
||
mksini_free();
|
||
}
|
||
}
|
||
|
||
void online_update() {
|
||
page_to(TJC_PAGE_UPDATING);
|
||
send_cmd_vis(tty_fd, "j0", "1");
|
||
send_cmd_vis(tty_fd, "t1", "1");
|
||
pthread_t recevice_progress_pthread;
|
||
pthread_create(&recevice_progress_pthread, NULL, recevice_progress_handle, NULL);
|
||
system("rm /home/mks/gcode_files/.cache/*\n");
|
||
system("python3 /root/auto_update/download_update.py\n");
|
||
// page_to(TJC_PAGE_UPDATE_FINISH);
|
||
system("sync\n");
|
||
system("systemctl restart makerbase-client\n");
|
||
}
|
||
|
||
// CLL 创建线程用于接收在线更新进度
|
||
void *recevice_progress_handle(void *arg) {
|
||
while(1) {
|
||
if (current_page_id == TJC_PAGE_UPDATING) {
|
||
progressini_load();
|
||
int update_progress = mksini_getint("progress", "value", update_progress);
|
||
std::string progress_name = mksini_getstring("filename", "name", progress_name);
|
||
mksini_free();
|
||
if (progress_name.find("Installing") == -1) {
|
||
send_cmd_txt(tty_fd, "t2", progress_name);
|
||
send_cmd_val(tty_fd, "j0", std::to_string(update_progress));
|
||
send_cmd_txt(tty_fd, "t1", std::to_string(update_progress) + "%");
|
||
} else {
|
||
page_to(TJC_PAGE_INSTALLING);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
void refresh_page_auto_unload() {
|
||
send_cmd_txt(tty_fd, "t4", "(" + std::to_string(printer_extruder_temperature) + "/" + std::to_string(printer_extruder_target) + "℃)");
|
||
if (step_1 == true) {
|
||
step_1 = false;
|
||
send_cmd_vis(tty_fd, "gm1", "0");
|
||
send_cmd_vis(tty_fd, "gm2", "1");
|
||
send_cmd_picc(tty_fd, "q0", "231");
|
||
send_cmd_pco(tty_fd, "t1", "65535");
|
||
send_cmd_pco(tty_fd, "t0", "38066");
|
||
}
|
||
if (step_2 == true) {
|
||
step_2 = false;
|
||
send_cmd_vis(tty_fd, "gm2", "0");
|
||
send_cmd_picc(tty_fd, "q0", "232");
|
||
send_cmd_pco(tty_fd, "t2", "65535");
|
||
send_cmd_pco(tty_fd, "t1", "38066");
|
||
send_cmd_vis(tty_fd, "b0", "1");
|
||
send_cmd_vis(tty_fd, "b1", "1");
|
||
}
|
||
}
|
||
|
||
int get_mks_ethernet() {
|
||
mksini_load();
|
||
mks_ethernet = mksini_getboolean("mks_ethernet", "enable", 0);
|
||
mksini_free();
|
||
return mks_ethernet;
|
||
}
|
||
|
||
void set_mks_ethernet(int target) {
|
||
std::cout << "设置以太网:" << target << std::endl;
|
||
mksini_load();
|
||
mksini_set("mks_ethernet", "enable", std::to_string(target));
|
||
mksini_save();
|
||
mksini_free();
|
||
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;
|
||
}
|
||
} |