#include "gui.h" #include "button.h" #include "PROGBAR.h" #include "draw_ui.h" #include "draw_ready_print.h" //#include "gcode.h" //#include "printer.h" #include "draw_machine.h" #include "draw_log_ui.h" #include "draw_language.h" #include "draw_about.h" #include "draw_wifi.h" #include "draw_print_file.h" #include "draw_printing.h" #include "draw_move_motor.h" #include "draw_operate.h" #include "draw_pause_ui.h" #include "draw_extrusion.h" #include "draw_pre_heat.h" #include "draw_change_speed.h" #include "draw_fan.h" #include "draw_set.h" #include "draw_zero.h" #include "draw_sprayer.h" #include "draw_machine.h" #include "draw_language.h" #include "draw_log_ui.h" #include "draw_wifi.h" #include "draw_more.h" #include "string_deal.h" #include "ff.h" #include "pic_manager.h" #include "ili9320.h" #include "draw_printing_moremenu.h" #include "draw_filamentchange.h" /******add********/ #include "draw_main.h" #include "tim.h" #include "mks_tft_com.h" #include "draw_manual_leveling.h" #include "mks_tft_reprint.h" #include "stm32f4xx_hal.h" #include "stm32f4xx_hal_flash_ex.h" #include "at24cxx.h" #include "draw_bind.h" #include "draw_disk.h" #include "draw_zoffset.h" #include "draw_tool.h" //#include "draw_machine.h" //#include "draw_keyboard.h" #include "draw_babyStep.h" #include "draw_wifi_list.h" #include "draw_Tips.h" #include "wifi_module.h" value_state value; value_type valueType; uint8_t gcodeSet_flag = 0; extern volatile int16_t logo_time; extern PR_STATUS printerStaus; extern uint8_t temp_update_flag; extern uint8_t step_update_flag; extern uint8_t print_start_flg; extern uint8_t from_flash_pic; extern uint8_t probeOffset_update; /******end********/ extern GUI_FLASH const GUI_FONT GUI_FontHZ_fontHz14; extern GUI_CONST_STORAGE GUI_BITMAP bmpreheat; extern GUI_CONST_STORAGE GUI_BITMAP bmadd; extern GUI_CONST_STORAGE GUI_BITMAP bmdec; extern GUI_CONST_STORAGE GUI_BITMAP bmdir; extern GUI_CONST_STORAGE GUI_BITMAP bmextru; extern GUI_CONST_STORAGE GUI_BITMAP bmfile; extern GUI_CONST_STORAGE GUI_BITMAP bmmov; extern GUI_CONST_STORAGE GUI_BITMAP bmpageDown; extern GUI_CONST_STORAGE GUI_BITMAP bmpageUp; extern GUI_CONST_STORAGE GUI_BITMAP bmprinting; extern GUI_CONST_STORAGE GUI_BITMAP bmreturn; extern GUI_CONST_STORAGE GUI_BITMAP bmset; extern GUI_CONST_STORAGE GUI_BITMAP bmzero; extern uint8_t gcode_preview_over; uint8_t temperature_change_frequency = 1;//用于显示温度更新的频率 //unsigned char bmp_public_buf[16*1024] = {0}; extern uint8_t wifi_refresh_flg; extern void disp_wifi_state(); extern void filament_dialog_handle(void); DISP_STATE_STACK disp_state_stack; DISP_STATE disp_state = MAIN_UI; DISP_STATE last_disp_state; char BMP_PIC_X = 0 ; char BMP_PIC_Y = 0; uint32_t To_pre_view; static GUI_HWIN hMainWnd; static BUTTON_STRUCT button4;//button1, button2, button3, button4; extern GUI_FLASH const GUI_FONT GUI_FontHZ_fontHz18; #if _LFN_UNICODE extern TCHAR curFileName[150]; #else extern char curFileName[150]; #endif extern GUI_CONST_STORAGE GUI_BITMAP bmlogo; extern GUI_CONST_STORAGE GUI_BITMAP bmpreheat; extern CFG_ITMES gCfgItems; extern int X_ADD,X_INTERVAL; //**图片间隔 extern uint8_t volatile printing_rate_update_flag; extern volatile uint32_t TimeIncrease; static volatile uint8_t fan_move_flag; extern FILE_PRINT_STATE gCurFileState ; extern uint8_t fan_change_flag; //PR_STATUS printerStaus = pr_idle; #define MAX_TITLE_LEN 28 static CB_EVENT_STACK gCbEventStack; //Tan21060406 #define INC_RD_POINT(b) ((b.r_idx+1 == sizeof(b.event) / sizeof(b.event[0])) ? 0 : b.r_idx+1) #define INC_WR_POINT(b) ((b.w_idx+1 == sizeof(b.event) / sizeof(b.event[0])) ? 0 : b.w_idx+1) void init_cb_stack() { memset(&gCbEventStack.event, 0, sizeof(gCbEventStack.event)); gCbEventStack.r_idx = 0; gCbEventStack.w_idx = 0; } void push_cb_stack(int16_t event_id) { if(INC_WR_POINT(gCbEventStack) == gCbEventStack.r_idx) //overflow { return; } gCbEventStack.event[gCbEventStack.w_idx] = event_id; gCbEventStack.w_idx = INC_WR_POINT(gCbEventStack); } int16_t pop_cb_stack() { int16_t ret; if(gCbEventStack.r_idx != gCbEventStack.w_idx) { ret = gCbEventStack.event[gCbEventStack.r_idx]; gCbEventStack.r_idx = INC_RD_POINT(gCbEventStack); return ret; } else { return -1; } } void GUI_callback() { int16_t action_id = pop_cb_stack(); if(action_id != (int16_t)-1) { uid.executeAction(action_id); } } void titleText_cat(char *str, int strSize, char *addPart) { if(str == 0 || addPart == 0) { return; } if(strlen(str) + strlen(addPart) >= strSize) { return; } strcat(str, addPart); } static char TitleText[30]; char *getDispText(int index) { memset(TitleText, 0, sizeof(TitleText)); switch(disp_state_stack._disp_state[index]) { case PRINT_READY_UI: strcpy(TitleText, main_menu.title); break; case PRINT_FILE_UI: strcpy(TitleText, file_menu.title); break; case PRINTING_UI: if(disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI /* || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI */) { strcpy(TitleText, common_menu.print_special_title); } else { strcpy(TitleText, printing_menu.title); } break; case MOVE_MOTOR_UI: strcpy(TitleText, move_menu.title); break; case OPERATE_UI: if(disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI /* || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI */) { strcpy(TitleText, common_menu.operate_special_title); } else { strcpy(TitleText, operation_menu.title); } break; case PAUSE_UI: if(disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI) { strcpy(TitleText, common_menu.pause_special_title); } else { strcpy(TitleText, pause_menu.title); } break; case EXTRUSION_UI: strcpy(TitleText, extrude_menu.title); break; case CHANGE_SPEED_UI: strcpy(TitleText, speed_menu.title); break; case FAN_UI: strcpy(TitleText, fan_menu.title); break; case PRE_HEAT_UI: if((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI)) { strcpy(TitleText,preheat_menu.adjust_title); } else { strcpy(TitleText, preheat_menu.title); } break; case SET_UI: strcpy(TitleText, set_menu.title); break; case ZERO_UI: strcpy(TitleText, home_menu.title); break; case SPRAYER_UI: break; case MACHINE_UI: break; case LANGUAGE_UI: strcpy(TitleText, language_menu.title); break; case ABOUT_UI: strcpy(TitleText, about_menu.title); break; case LOG_UI: break; case DISK_UI: strcpy(TitleText, filesys_menu.title); break; case DIALOG_UI: strcpy(TitleText, common_menu.dialog_confirm_title); break; case WIFI_UI: strcpy(TitleText, wifi_menu.title); break; case MORE_UI: case PRINT_MORE_UI: strcpy(TitleText, more_menu.title); break; case FILAMENTCHANGE_UI: strcpy(TitleText, filament_menu.title); break; case LEVELING_UI: strcpy(TitleText, leveling_menu.title); break; case BIND_UI: strcpy(TitleText, cloud_menu.title); break; case ZOFFSET_UI: strcpy(TitleText, zoffset_menu.title); break; case TOOL_UI: strcpy(TitleText, tool_menu.title); break; case MACHINE_PARA_UI: strcpy(TitleText, MachinePara_menu.title); break; case BABY_STEP_UI: strcpy(TitleText, operation_menu.babystep); break; case WIFI_LIST_UI: strcpy(TitleText, list_menu.title); break; default: break; } return TitleText; } static char titleText[100] = {0}; //uint8_t curFileName[30] = {0}; char *creat_title_text() { int index = 0; char *tmpText = 0; TCHAR tmpCurFileStr[20]; memset(tmpCurFileStr, 0, sizeof(tmpCurFileStr)); #if _LFN_UNICODE cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr); #else cutFileName(curFileName, 16, 16, tmpCurFileStr); #endif memset(titleText, 0, sizeof(titleText)); while(index <= disp_state_stack._disp_index) { tmpText = getDispText(index); if((*tmpText == 0) || (tmpText == 0)) { index++; continue; } titleText_cat(titleText, sizeof(titleText), tmpText); if(index < disp_state_stack._disp_index) { titleText_cat(titleText, sizeof(titleText), ">"); } index++; } if(disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/) { titleText_cat(titleText, sizeof(titleText), ":"); titleText_cat(titleText, sizeof(titleText), (char *)tmpCurFileStr); } if(strlen(titleText) > MAX_TITLE_LEN) { memset(titleText, 0, sizeof(titleText)); tmpText = getDispText(0); if(*tmpText != 0) { titleText_cat(titleText, sizeof(titleText), tmpText); titleText_cat(titleText, sizeof(titleText), ">...>"); tmpText = getDispText(disp_state_stack._disp_index); if(*tmpText != 0) { titleText_cat(titleText, sizeof(titleText), tmpText); } } } return titleText; } void disp_sel_lang() { if(gCfgItems.language == LANG_ENGLISH) { BUTTON_SetBkColor(button4.btnHandle, BUTTON_CI_UNPRESSED, GUI_FOCUS_CLOLOR); //BUTTON_SetBkColor(button1, BUTTON_CI_UNPRESSED, GUI_BLUE); //BUTTON_SetBkColor(button3, BUTTON_CI_UNPRESSED, GUI_BLUE); } /*else if(gCfgItems.language == 3) { BUTTON_SetBkColor(button3, BUTTON_CI_UNPRESSED, GUI_FOCUS_CLOLOR); BUTTON_SetBkColor(button1, BUTTON_CI_UNPRESSED, GUI_BLUE); BUTTON_SetBkColor(button2, BUTTON_CI_UNPRESSED, GUI_BLUE); }*/ else { //BUTTON_SetBkColor(button1, BUTTON_CI_UNPRESSED, GUI_FOCUS_CLOLOR); BUTTON_SetBkColor(button4.btnHandle, BUTTON_CI_UNPRESSED, GUI_BUTTON_COLOR); //BUTTON_SetBkColor(button3, BUTTON_CI_UNPRESSED, GUI_BLUE); } } void clear_cur_ui() { last_disp_state = disp_state_stack._disp_state[disp_state_stack._disp_index]; switch(disp_state_stack._disp_state[disp_state_stack._disp_index]) { case PRINT_READY_UI: Get_Temperature_Flg = 0; Clear_ready_print(); break; case PRINT_FILE_UI: Clear_print_file(); break; case PRINTING_UI: Clear_printing(); break; case MOVE_MOTOR_UI: Clear_move_motor(); break; case OPERATE_UI: Clear_operate(); break; case PAUSE_UI: Clear_pause(); break; case EXTRUSION_UI: Clear_extrusion(); break; case PRE_HEAT_UI: Clear_preHeat(); break; case CHANGE_SPEED_UI: Clear_changeSpeed(); break; case FAN_UI: Clear_fan(); break; case SET_UI: Clear_Set(); break; case ZERO_UI: Clear_Zero(); break; case SPRAYER_UI: Clear_Sprayer(); break; case MACHINE_UI: Clear_Machine(); break; case LANGUAGE_UI: Clear_Language(); break; case ABOUT_UI: Clear_About(); break; case LOG_UI: Clear_Connect(); break; case DISK_UI: Clear_Disk(); break; case WIFI_UI: Clear_Wifi(); break; case MORE_UI: Clear_more(); break; case FILETRANSFER_UI: /// Clear_fileTransfer(); break; case DIALOG_UI: Clear_dialog(); break; case FILETRANSFERSTATE_UI: ///// Clear_WifiFileTransferdialog(); break; case PRINT_MORE_UI: Clear_Printmore(); break; case LEVELING_UI: Clear_Leveling();//** break; case BIND_UI: Clear_Bind(); break; case ZOFFSET_UI: Clear_Zoffset(); break; case TOOL_UI: Clear_Tool(); break; //chen 11.7 case FILAMENTCHANGE_UI: Clear_FilamentChange(); break; // case MESHLEVELING_UI: // Clear_MeshLeveling(); // break; case HARDWARE_TEST_UI: // Clear_Hardwaretest(); break; case WIFI_LIST_UI: Clear_Wifi_list(); break; case KEY_BOARD_UI: Clear_Keyboard(); break; case TIPS_UI: Clear_Tips(); break; case MACHINE_PARA_UI: Clear_MachinePara(); break; case MACHINE_SETTINGS_UI: Clear_MachineSettings(); break; case TEMPERATURE_SETTINGS_UI: Clear_TemperatureSettings(); break; case MOTOR_SETTINGS_UI: Clear_MotorSettings(); break; case MACHINETYPE_UI: Clear_MachineType(); break; // case STROKE_UI: //// Clear_Stroke(); // break; // case HOME_DIR_UI: //// Clear_HomeDir(); // break; case ENDSTOP_TYPE_UI: // Clear_EndstopType(); break; case FILAMENT_SETTINGS_UI: Clear_FilamentSettings(); break; case LEVELING_SETTIGNS_UI: Clear_LevelingSettings(); break; case LEVELING_PARA_UI: Clear_LevelingPara(); break; // case DELTA_LEVELING_PARA_UI: //// Clear_DeltaLevelPara(); // break; case XYZ_LEVELING_PARA_UI: Clear_XYZLevelPara(); break; case MAXFEEDRATE_UI: Clear_MaxFeedRate(); break; case STEPS_UI: Clear_Steps(); break; case ACCELERATION_UI: Clear_Acceleration(); break; // case JERK_UI: //// Clear_Jerk(); // break; // case MOTORDIR_UI: //// Clear_MotorDir(); // break; // case HOMESPEED_UI: //// Clear_HomeSpeed(); // break; // case NOZZLE_CONFIG_UI: //// Clear_NozzleConfig(); // break; // case HOTBED_CONFIG_UI: //// Clear_HotbedConfig(); // break; case ADVANCED_UI: Clear_Advanced(); break; // case DOUBLE_Z_UI: //// Clear_DoubleZ(); // break; // case ENABLE_INVERT_UI: //// Clear_EnableInvert(); // break; case NUMBER_KEY_UI: Clear_NumberKey(); break; case BABY_STEP_UI: Clear_babyStep(); break; case FIRMWARETYPE_UI: Clear_FirmwareType(); break; case BAUDRATE_UI: Clear_BaudRate(); break; case PAUSE_POSITION_UI: Clear_PausePos(); break; // case WIFI_CONF_UI: // Clear_WifiConfig(); // break; case CUSTOM_UI: Clear_CustomConf(); break; case BUTTONCONF_UI: Clear_buttonConf(); break; case MOREBTN_UI: Clear_MoreBtns(); break; case DISPLAY_CONF_UI: Clear_displayConf(); break; case PRINTMOREBTN_UI: Clear_printMoreBtn(); break; case CURRENTCONF_UI: Clear_currentSetting(); break; case CONSOLE_UI: // Clear_console(); break; case TMCSENSIVISITY_UI: Clear_TMCsensitivity(); break; default: break; } GUI_Clear(); } void draw_return_ui() { if(disp_state_stack._disp_index > 0) { disp_state_stack._disp_index--; switch(disp_state_stack._disp_state[disp_state_stack._disp_index]) { case PRINT_READY_UI: draw_ready_print(); break; case PRINT_FILE_UI: draw_print_file(); break; case PRINTING_UI: draw_printing(); break; case MOVE_MOTOR_UI: draw_move_motor(); break; case OPERATE_UI: draw_operate(); break; case PAUSE_UI: draw_pause(); break; case EXTRUSION_UI: draw_extrusion(); break; case PRE_HEAT_UI: draw_preHeat(); break; case CHANGE_SPEED_UI: draw_changeSpeed(); break; case FAN_UI: draw_fan(); break; case SET_UI: draw_Set(); break; case ZERO_UI: draw_Zero(); break; case SPRAYER_UI: draw_Sprayer(); break; case MACHINE_UI: draw_Machine(); break; case LANGUAGE_UI: draw_Language(); break; case ABOUT_UI: draw_About(); break; case LOG_UI: draw_Connect(); break; case CALIBRATE_UI: //// draw_calibrate(); break; case DISK_UI: draw_Disk(); break; case WIFI_UI: draw_Wifi(); break; case MORE_UI: draw_More(); break; case PRINT_MORE_UI: draw_printmore(); break; case FILAMENTCHANGE_UI: draw_FilamentChange(); break; case LEVELING_UI: //draw_leveling(); break; case BIND_UI: draw_bind(); break; case ZOFFSET_UI: draw_Zoffset(); break; case TOOL_UI: draw_tool(); break; //lan // case MESHLEVELING_UI: // draw_meshleveling(); // break; // case HARDWARE_TEST_UI: // draw_Hardwaretest(); // break; case WIFI_LIST_UI: draw_Wifi_list(); break; case KEY_BOARD_UI: draw_Keyboard(); break; case TIPS_UI: draw_Tips(); break; case MACHINE_PARA_UI: draw_MachinePara(); break; case MACHINE_SETTINGS_UI: draw_MachineSettings(); break; case TEMPERATURE_SETTINGS_UI: draw_TemperatureSettings(); break; case MOTOR_SETTINGS_UI: draw_MotorSettings(); break; case MACHINETYPE_UI: draw_MachineType(); break; // case STROKE_UI: //// draw_Stroke(); // break; // case HOME_DIR_UI: //// draw_HomeDir(); // break; // case ENDSTOP_TYPE_UI: //// draw_EndstopType(); // break; case FILAMENT_SETTINGS_UI: draw_FilamentSettings(); break; case LEVELING_SETTIGNS_UI: draw_LevelingSettings(); break; case LEVELING_PARA_UI: draw_LevelingPara(); break; // case DELTA_LEVELING_PARA_UI: //// draw_DeltaLevelPara(); // break; case XYZ_LEVELING_PARA_UI: draw_XYZLevelPara(); break; case MAXFEEDRATE_UI: draw_MaxFeedRate(); break; case STEPS_UI: draw_Steps(); break; case ACCELERATION_UI: draw_Acceleration(); break; // case JERK_UI: //// draw_Jerk(); // break; // case MOTORDIR_UI: //// draw_MotorDir(); // break; // case HOMESPEED_UI: //// draw_HomeSpeed(); // break; // case NOZZLE_CONFIG_UI: //// draw_NozzleConfig(); // break; // case HOTBED_CONFIG_UI: //// draw_HotbedConfig(); // break; case ADVANCED_UI: draw_Advanced(); break; // case DOUBLE_Z_UI: //// draw_DoubleZ(); // break; // case ENABLE_INVERT_UI: //// draw_EnableInvert(); // break; case NUMBER_KEY_UI: draw_NumberKey(); break; case DIALOG_UI: // draw_dialog(DialogType); break; case BABY_STEP_UI: draw_babyStep(); break; case FIRMWARETYPE_UI: draw_FirmwareType(); break; case BAUDRATE_UI: draw_BaudRate(); break; case PAUSE_POSITION_UI: draw_PausePos(); break; // case WIFI_CONF_UI: // draw_WifiConfig(); // break; case CUSTOM_UI: draw_CustomConf(); break; case BUTTONCONF_UI: draw_buttonConf(); break; case MOREBTN_UI: draw_MoreBtns(); break; case DISPLAY_CONF_UI: draw_displayConf(); break; case PRINTMOREBTN_UI: draw_printMoreBtn(); break; case CURRENTCONF_UI: draw_currentSetting(); break; case CONSOLE_UI: // draw_console(); break; case TMCSENSIVISITY_UI: draw_TMCsensitivity(); break; default: break; } } } void gui_view_init() { /* gCfgItems.custom_pic_flag = 1; gCfgItems.language = LANG_SIMPLE_CHINESE; gCfgItems.background_color = GUI_BK_CLOLOR; gCfgItems.title_color = GUI_TITLE_TEXT_COLOR; gCfgItems.state_background_color = GUI_STATE_COLOR; gCfgItems.state_text_color = GUI_STATE_TEXT_COLOR; gCfgItems.filename_color = GUI_FILE_NAME_TEXT_COLOR; gCfgItems.filename_background_color = GUI_FILE_NAME_BK_COLOR; gCfgItems.printingstate_word_background_color = GUI_PRINTING_STATE_BK_COLOR; gCfgItems.printingstate_word_color = GUI_PRINTING_STATE_TEXT_COLOR; //gCfgItems.language = 3; */ #if 0 if(gCfgItems.language == LANG_COMPLEX_CHINESE) { GUI_SetFont(&GUI_FontHZ16); } else { GUI_SetFont(&FONT_TITLE); } GUI_SetBkColor(gCfgItems.background_color); BUTTON_SetDefaultTextAlign(GUI_TA_BOTTOM | GUI_TA_HCENTER); if(gCfgItems.language == LANG_COMPLEX_CHINESE) { BUTTON_SetDefaultFont(&GUI_FontHZ16); } else { BUTTON_SetDefaultFont(&FONT_TITLE); } if(gCfgItems.language == LANG_COMPLEX_CHINESE) { TEXT_SetDefaultFont(&GUI_FontHZ16); } else { TEXT_SetDefaultFont(&FONT_TITLE); } //BUTTON_SetDefaultFont(&FONT_BUTTON); /* BUTTON_SetDefaultBkColor(GUI_BUTTON_COLOR, BUTTON_CI_UNPRESSED); BUTTON_SetDefaultBkColor(GUI_BUTTON_COLOR, BUTTON_CI_PRESSED); BUTTON_SetDefaultTextColor(GUI_WHITE, BUTTON_CI_UNPRESSED); BUTTON_SetDefaultTextColor(GUI_WHITE, BUTTON_CI_PRESSED); */ #endif GUI_SetFont(&FONT_TITLE); BUTTON_SetDefaultFont(&FONT_TITLE); TEXT_SetDefaultFont(&FONT_TITLE); GUI_SetBkColor(gCfgItems.background_color); BUTTON_SetDefaultTextAlign(GUI_TA_BOTTOM | GUI_TA_HCENTER); BUTTON_SetDefaultBkColor(gCfgItems.background_color, BUTTON_CI_UNPRESSED); BUTTON_SetDefaultBkColor(gCfgItems.background_color, BUTTON_CI_PRESSED); BUTTON_SetDefaultTextColor(gCfgItems.title_color, BUTTON_CI_UNPRESSED); BUTTON_SetDefaultTextColor(gCfgItems.title_color, BUTTON_CI_PRESSED); if(gCfgItems.button_3d_effect_flag != 1) { WIDGET_SetDefaultEffect(&WIDGET_Effect_Simple); } init_cb_stack(); //sean 19.3.5 #if 1 //if(gCfgItems.touch_adjust_default == 0) //{ HAL::AT24CXX_Read(BAK_TOUCH_ADJ_FLAG_ADDR,(uint8_t *)&gCfgItems.touch_adj_flag,sizeof(gCfgItems.touch_adj_flag)); if(gCfgItems.touch_adj_flag == 0xaa) { HAL::AT24CXX_Read(BAK_TOUCH_ADJ_XMIN_ADDR, (uint8_t *)&gCfgItems.touch_adj_xMin, 4); HAL::AT24CXX_Read(BAK_TOUCH_ADJ_XMAX_ADDR, (uint8_t *)&gCfgItems.touch_adj_xMax, 4); HAL::AT24CXX_Read(BAK_TOUCH_ADJ_YMIN_ADDR, (uint8_t *)&gCfgItems.touch_adj_yMin, 4); HAL::AT24CXX_Read(BAK_TOUCH_ADJ_YMAX_ADDR, (uint8_t *)&gCfgItems.touch_adj_yMax, 4); } //} #endif } //** int8_t get_printing_rate(FIL *fileHandle) { int8_t rate; if(fileHandle == 0) return -1; if(fileHandle->fptr == 0) return -1; if(fileHandle->fsize == 0) return -1; if(fileHandle->fptr > fileHandle->fsize) return -1; if(from_flash_pic != 1) { rate = (unsigned char)((float)f_tell(fileHandle) * 100 / f_size(fileHandle)); } else { rate = (unsigned char)(((float)f_tell(fileHandle)-(PREVIEW_SIZE+To_pre_view)) * 100 / (f_size(fileHandle)-(PREVIEW_SIZE+To_pre_view))); } if((rate == 100) && (printerStaus != pr_idle)) { rate = 99; } if((rate == 99) && (printerStaus == pr_idle)) { rate = 100; } gCurFileState.totalSend = rate; return rate; } #if 1 extern uint16_t z_high_count; extern uint8_t move_speed_flg; extern uint8_t current_update_flag; extern uint8_t maxFR_update_flag; extern uint8_t accel_update_flag; extern uint8_t sensivisity_update; void GUI_RefreshPage() { __IO uint32_t i =0; switch(disp_state) { case MAIN_UI: //** if(logo_time * TICK_CYCLE >= 3000 ) { clear_main_ui(); last_disp_state = MAIN_UI; draw_ready_print(); } break; case EXTRUSION_UI: if(temp_update_flag == 1) { temp_update_flag = 0; disp_sprayer_temp(); } break; case PRE_HEAT_UI: if(temp_update_flag == 1) { temp_update_flag = 0; disp_desire_temp(); } break; case PRINT_READY_UI: /* if(fan_move_flag) { fan_move_flag = 0; disp_fan_move(); }*/ break; case PRINT_FILE_UI: break; case PRINTING_UI: /*if(temperature_change_frequency == 1) { temperature_change_frequency = 0; disp_sprayer_tem_printing(); disp_bed_temp_printing(); } setProBarRate(); #if VERSION_WITH_PIC disp_fan_move_printing(); #endif break;*/ if(temp_update_flag) { temp_update_flag = 0; disp_sprayer_tem_printing(); disp_bed_temp_printing(); disp_print_time(); } if(printing_rate_update_flag) { printing_rate_update_flag = 0; if(gcode_preview_over == 0) { setProBarRate(get_printing_rate(srcfp)); } } if(!(TimeIncrease * TICK_CYCLE % 100)) // 0.1s { fan_move_flag = 1; } #if VERSION_WITH_PIC if(fan_move_flag) { fan_move_flag = 0; disp_fan_move_printing(); } #endif if(move_speed_flg == 1) { move_speed_flg =0; disp_printing_speed(); } break; case OPERATE_UI: /*if(temperature_change_frequency == 1) { temperature_change_frequency = 0; disp_temp_operate(); } setProBarRateOpera(); break;*/ if(temp_update_flag) { temp_update_flag = 0; disp_temp_operate(); } if(printing_rate_update_flag) { printing_rate_update_flag = 0; setProBarRateOpera(get_printing_rate(srcfp)); } if((printerStaus == pr_idle)&&(gCurFileState.totalSend == 100)) { clear_cur_ui(); draw_printing(); } break; case PAUSE_UI: if(printerStaus == pr_idle) { Clear_pause(); stop_print_time(); f_close(srcfp); reset_file_info(); //reset_tx_fifo(); draw_ready_print(); } if(temp_update_flag) { temp_update_flag = 0; disp_temp_pause(); } if(fan_change_flag) { fan_change_flag = 0; disp_temp_pause(); } break; case FAN_UI: if(fan_change_flag) { fan_change_flag = 0; disp_fan_speed(); } break; case MOVE_MOTOR_UI: //显示Z轴坐标 if((gCfgItems.getzpos_enable ==0)&&(printerStaus != pr_pause)) { i=0; while(RePrintData.mov_z_coordinate[i]!= '\n') { gCfgItems.move_z_coordinate[i] = RePrintData.mov_z_coordinate[i]; i++; if(i>20)break; } gCfgItems.move_z_coordinate[i] = 0; //GUI_DispStringAtCEOL((const char *)gCfgItems.move_z_coordinate,220, X_INTERVAL); if(z_high_count==500) //每隔500us显示一次 GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate,400, TITLE_YPOS); } break; case WIFI_UI: if(wifi_refresh_flg == 1) { disp_wifi_state(); wifi_refresh_flg = 0; } break; case FILAMENTCHANGE_UI: if(temp_update_flag) { temp_update_flag = 0; disp_filament_sprayer_temp(); } //FilamentChange_handle(); break; case DIALOG_UI: filament_dialog_handle(); //lan wifi_scan_handle(); break; case KEY_BOARD_UI: update_password_disp(); // if(valueType == wifi_setting) // { update_join_state_disp(); // } break; case BABY_STEP_UI: if(gCfgItems.zoffset_disp_flag == ENABLE) { gCfgItems.zoffset_disp_flag = DISABLE; //获得Zoffset数值 #if defined(TFT70) //GUI_DispStringAt((const char *),480, TITLE_YPOS); GUI_SetColor(gCfgItems.background_color); GUI_FillRect(480, TITLE_YPOS, LCD_WIDTH, titleHeight); GUI_SetColor(gCfgItems.title_color); GUI_DispStringAt((const char *)gCfgItems.disp_zoffset_buf,480, TITLE_YPOS); #else //GUI_DispStringAt((const char *),290, TITLE_YPOS); GUI_SetColor(gCfgItems.background_color); GUI_FillRect(290, TITLE_YPOS, LCD_WIDTH, titleHeight); GUI_SetColor(gCfgItems.title_color); GUI_DispStringAt((const char *)gCfgItems.disp_zoffset_buf,290, TITLE_YPOS); #endif //memset(gCfgItems.disp_zoffset_buf,0,sizeof(gCfgItems.disp_zoffset_buf)); } break; case STEPS_UI: if (step_update_flag == 1) { step_update_flag = 0; disp_motor_step(); } break; case CURRENTCONF_UI: if (current_update_flag == 1) { current_update_flag = 0; disp_motor_current(); } break; case MAXFEEDRATE_UI: if (current_update_flag == 1) { maxFR_update_flag = 0; disp_maxFeedRate(); } break; case ACCELERATION_UI: if (current_update_flag == 1) { accel_update_flag = 0; disp_acceleration(); } break; case LEVELING_PARA_UI: if (probeOffset_update == 1) { probeOffset_update = 0; disp_probeOffset(); } break; case TMCSENSIVISITY_UI: if (sensivisity_update == 1) { sensivisity_update = 0; disp_TMCsensivisity(); } break; case WIFI_LIST_UI: if(wifi_refresh_flg == 1) { //disp_wifi_state(); disp_wifi_list(); wifi_refresh_flg = 0; } break; case TIPS_UI: switch(tips_type) { case TIPS_TYPE_JOINING: if(wifi_link_state == WIFI_CONNECTED && strcmp((const char *)wifi_list.wifiConnectedName,(const char *)wifi_list.wifiName[wifi_list.nameIndex]) == 0) { tips_disp.timer = TIPS_TIMER_STOP; tips_disp.timer_count = 0; Clear_Tips(); tips_type = TIPS_TYPE_WIFI_CONECTED; draw_Tips(); //memset(&wifi_list.wifiConnectedName,0,sizeof(wifi_list.wifiConnectedName)); //memcpy(&wifi_list.wifiConnectedName,wifi_list.wifiName[wifi_list.nameIndex],WIFI_NAME_BUFFER_SIZE); } if(tips_disp.timer_count >= 30) { tips_disp.timer = TIPS_TIMER_STOP; tips_disp.timer_count = 0; Clear_Tips(); tips_type = TIPS_TYPE_TAILED_JOIN; draw_Tips(); } break; case TIPS_TYPE_TAILED_JOIN: if(tips_disp.timer_count >= 3) { tips_disp.timer = TIPS_TIMER_STOP; tips_disp.timer_count = 0; last_disp_state = TIPS_UI; Clear_Tips(); draw_Wifi_list(); } break; case TIPS_TYPE_WIFI_CONECTED: if(tips_disp.timer_count >= 3) { tips_disp.timer = TIPS_TIMER_STOP; tips_disp.timer_count = 0; last_disp_state = TIPS_UI; Clear_Tips(); draw_Wifi(); } break; default: break; } break; default: break; } print_time_run(); } #endif //tan 20160830 /* void BUTTON_SetBmpFileName(BUTTON_STRUCT *btnStruct, const uint8_t *picName) { btnStruct->btnPic.XSize = 78; btnStruct->btnPic.YSize = 104; btnStruct->btnPic.BytesPerLine = 160; btnStruct->btnPic.BitsPerPixel = 16; btnStruct->btnPic.pPal = NULL; btnStruct->btnPic.pMethods = GUI_DRAW_BMPM565; btnStruct->btnPic.pData = bmp_public_buf; bindBmpFileData(&btnStruct->btnPic.pData, (uint8_t *)picName); BUTTON_SetBitmapEx(btnStruct->btnHandle, 0, &btnStruct->btnPic, BMP_PIC_X, BMP_PIC_Y); BUTTON_SetFocussable(btnStruct->btnHandle, 0); } */ //unsigned char bmp_public_buf[1280] = {0}; uint8_t logo_n[13] = "bmp_logo.bin"; uint8_t t[17] = "bmp_pre_heat.bin"; void DRAW_LOGO() { int index; int x_off = 0, y_off = 0; int _x, _y; uint16_t *p_index; int i; //GUI_SetBkColor(gCfgItems.background_color); //GUI_Clear(); //GUI_SetColor(gCfgItems.title_color); #if 0 #if VERSION_WITH_PIC Pic_Read(t,bmp_public_buf); for(index = 0; index < 120; index ++) { Pic_Logo_Read(logo_n, bmp_public_buf, 1280); i = 0; ili9320_SetWindows(0, y_off * 2, 320, 2); ili9320_SetCursor(0, y_off * 2); LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */ for(_y = y_off * 2; _y < (y_off + 1) * 2; _y++) { for (x_off = 0; x_off < 320; x_off++) { p_index = (uint16_t *)(&bmp_public_buf[i]); LCD_WriteRAM(*p_index); i += 2; } if(i >= 1280) break; } y_off++; } ili9320_SetWindows(0, 0, 319, 239); #endif #endif #if defined(TFT70) /*for(index = 0; index < 10; index ++) { Pic_Logo_Read(logo_n, bmp_public_buf, 15360); i = 0; LCD_setWindowArea(0, y_off * 24, 320, 24); //**ili9320_SetCursor(0, y_off * 24); LCD_WriteRAM_Prepare(); for(_y = y_off * 24; _y < (y_off + 1) * 24; _y++) { for (x_off = 0; x_off < 320; x_off++) { p_index = (uint16_t *)(&bmp_public_buf[i]); LCD_WriteRAM(*p_index); i += 2; } if(i >= 15360) break; } y_off++; } LCD_setWindowArea(0, 0, 320, 240);*/ for(index = 0; index < 30; index ++)//800*480 //for(index = 0; index < 15; index ++)//800*240 { Pic_Logo_Read(logo_n, bmp_public_buf, 25600);//25k i = 0; LCD_setWindowArea(0, y_off * 16, 800,48); //800*480 //LCD_setWindowArea(0, y_off * 16+120, 800,48); //800*240 //**ili9320_SetCursor(0, y_off * 16); LCD_WriteRAM_Prepare(); for(_y = y_off * 16; _y < (y_off + 1) * 16; _y++) { for (x_off = 0; x_off < 800; x_off++) { p_index = (uint16_t *)(&bmp_public_buf[i]); LCD_WriteRAM(*p_index); i += 2; } if(i >= 25600) break; } y_off++; } LCD_setWindowArea(0, 0, 800, 480); /*LCD_setWindowArea(0, 0, 800, 480); LCD_setWindowArea(0, 48, 400,48); ili9320_SetCursor(0, 0); LCD_WriteRAM_Prepare(); for(j=0;j<48;j++) { for(k=0;k<400;k++) { LCD_WriteRAM(0XFFFFFFFF); } }*/ #elif defined(TFT35) for(index = 0; index < 20; index ++)//480*320 { Pic_Logo_Read(logo_n, bmp_public_buf, 15360);//15k i = 0; LCD_setWindowArea(0, y_off * 16, 480,16); //480*16 //LCD_setWindowArea(0, y_off * 16+120, 800,48); //800*240 //**ili9320_SetCursor(0, y_off * 16); LCD_WriteRAM_Prepare(); for(_y = y_off * 16; _y < (y_off + 1) * 16; _y++) { for (x_off = 0; x_off < 480; x_off++) { p_index = (uint16_t *)(&bmp_public_buf[i]); LCD_WriteRAM(*p_index); i += 2; } if(i >= 15360) break; } y_off++; } LCD_setWindowArea(0, 0, 480, 320); #endif } #if 1 void Draw_default_preview(int xpos_pixel,int ypos_pixel,uint8_t sel) { int index; int x_off = 0, y_off = 0; int _x, _y; uint16_t *p_index; int i; uint16_t temp_p; for(index = 0; index < 4; index ++)//200*200 { if(sel == 1) { flash_view_Read(bmp_public_buf, 20000);//20k } else { default_view_Read(bmp_public_buf, 20000);//20k } i = 0; LCD_setWindowArea(xpos_pixel, y_off * 50+ypos_pixel, 200,50); //200*200 LCD_WriteRAM_Prepare(); for(_y = y_off * 50; _y < (y_off + 1) * 50; _y++) { for (x_off = 0; x_off < 200; x_off++) { if(sel==1) { temp_p = (uint16_t)(bmp_public_buf[i]|bmp_public_buf[i+1]<<8); p_index = &temp_p; } else { p_index = (uint16_t *)(&bmp_public_buf[i]); } LCD_WriteRAM(*p_index); i += 2; } if(i >= 20000) break; } y_off++; } } int ascii2dec_test1(char *ascii) { int result = 0; if(ascii == 0) return 0; if(*(ascii) >= '0' && *(ascii) <= '9') result = *(ascii) - '0'; else if(*(ascii) >= 'a' && *(ascii) <= 'f') result = *(ascii) - 'a' + 0x0a; else if(*(ascii) >= 'A' && *(ascii) <= 'F') result = *(ascii) - 'A' + 0x0a; else return 0; return result; } uint8_t preview_pic=0; FIL TEST_FIL1; FIL curFile_1; uint8_t buff_pic[512]; uint32_t row; uint32_t size = 809; uint8_t gcode_preview_over; uint8_t flash_preview_begin; uint8_t default_preview_flg; uint8_t from_flash_pic; extern int once_flag; extern "C" void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite); extern "C" void SPI_FLASH_SectorErase(u32 SectorAddr); void gcode_preview(FIL *file,int xpos_pixel,int ypos_pixel) { uint8_t ress; UINT read,write; volatile uint32_t i,j; volatile uint16_t *p_index; int res; //memset(bmp_public_buf,0,sizeof(bmp_public_buf)); f_lseek(file, (PREVIEW_LITTLE_PIC_SIZE+To_pre_view)+size*row+8); //ress = f_read(file, buff_pic, size, &read); //if(ress == FR_OK) { LCD_setWindowArea(xpos_pixel, ypos_pixel+row, 200,1); LCD_WriteRAM_Prepare(); j=0; i=0; while(1) { f_read(file, buff_pic, 400, &read); for(i=0;i<400;) { bmp_public_buf[j]= ascii2dec_test1((char*)&buff_pic[i])<<4|ascii2dec_test1((char*)&buff_pic[i+1]); //bmp_public_buf[j]= ascii2dec_test1((char*)&buff_pic[8+i])<<4|ascii2dec_test1((char*)&buff_pic[8+i+1]); i+=2; j++; } //if(i>800)break; //#if defined(TFT70) //if(j>400) //{ // f_read(file, buff_pic, 1, &read); // break; //} //#elif defined(TFT35) if(j>=400) { //f_read(file, buff_pic, 1, &read); break; } //#endif } for(i=0;i<400;) { p_index = (uint16_t *)(&bmp_public_buf[i]); LCD_WriteRAM(*p_index); i=i+2; } if(row<20) { SPI_FLASH_SectorErase(BAK_VIEW_ADDR+row*4096); } SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR+row*400, 400); row++; if(row >= 200) { size = 809; row = 0; gcode_preview_over = 0; //flash_preview_begin = 1; f_close(file); if(gCurFileState.file_open_flag != 0xaa) { reset_file_info(); res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ); if(res == FR_OK) { f_lseek(file,PREVIEW_SIZE+To_pre_view); gCurFileState.file_open_flag = 0xaa; bakup_file_path((uint8_t *)curFileName, strlen(curFileName)); srcfp = file; printerStaus = pr_working; once_flag = 0; } } } } } void disp_pre_gcode(int xpos_pixel,int ypos_pixel) { if(gcode_preview_over==1) { gcode_preview(&TEST_FIL1,xpos_pixel,ypos_pixel); } if(flash_preview_begin == 1) { flash_preview_begin = 0; Draw_default_preview(xpos_pixel,ypos_pixel,1); } if(default_preview_flg == 1) { Draw_default_preview(xpos_pixel,ypos_pixel,0); default_preview_flg = 0; } } void preview_gcode_prehandle(char *path) { uint8_t re; UINT read; uint32_t pre_read_cnt = 0; uint32_t *p1,*p2; re = f_open(&TEST_FIL1, path, FA_OPEN_EXISTING | FA_READ);// #if 0 if(re == FR_OK) { f_lseek(&TEST_FIL1,PREVIEW_LITTLE_PIC_SIZE);// f_read(&TEST_FIL1,&bmp_public_buf,8,&read); if((bmp_public_buf[0] ==';')&&(bmp_public_buf[1] =='g') &&(bmp_public_buf[2] =='i')&&(bmp_public_buf[3] =='m') &&(bmp_public_buf[4] =='a')&&(bmp_public_buf[5] =='g') &&(bmp_public_buf[6] =='e')&&(bmp_public_buf[7] ==':')) { gcode_preview_over = 1; from_flash_pic = 1; HAL::AT24CXX_Write(BAK_PREVIEW_FROM_FLASH_ADDR, &from_flash_pic,1); } else { gcode_preview_over = 0; default_preview_flg = 1; from_flash_pic = 0; HAL::AT24CXX_Write(BAK_PREVIEW_FROM_FLASH_ADDR, &from_flash_pic,1); } } #else if(re==FR_OK) { //p1 = (int32_t *)&bmp_public_buf[0]; f_read(&TEST_FIL1,&bmp_public_buf[0],1024,&read); p2 = (uint32_t *)strstr((const char *)&bmp_public_buf[0],(const char *)";simage:"); if(p2) { pre_read_cnt = (uint32_t)p2-(uint32_t)((uint32_t *)(&bmp_public_buf[0])); //pre_sread_cnt = (uint32_t)ps4-(uint32_t)((uint32_t *)(&bmp_public_buf[0])); To_pre_view = pre_read_cnt; //f_lseek(&TEST_FIL1,PREVIEW_LITTLE_PIC_SIZE+pre_read_cnt); gcode_preview_over = 1; from_flash_pic = 1; HAL::AT24CXX_Write(BAK_PREVIEW_FROM_FLASH_ADDR, &from_flash_pic,1); } else { gcode_preview_over = 0; default_preview_flg = 1; from_flash_pic = 0; HAL::AT24CXX_Write(BAK_PREVIEW_FROM_FLASH_ADDR, &from_flash_pic,1); } } #endif } #endif #if 0 /*****************************************************/ //path:文件路径 //xsize,ysize:显示预览图片大小; //sel: // 0:文件目录预览; // 1:打印文件预览 // uint8_t drawicon_preview(char *path,int xsize_small,int ysize_small,int xsize_big,int ysize_big,char sel) { uint16_t *p_index; int i=0; char re; UINT read; char temp_test[8]; int row_1=0; re = f_open(&TEST_FIL,path, FA_OPEN_EXISTING | FA_READ);//huaping.gcode if(re == FR_OK) { memset(bmp_public_buf,0,sizeof(bmp_public_buf)); if(sel == 1)//big pic { f_lseek(&TEST_FIL,xsize_small*ysize_small+8*(ysize_small+1)); } f_read(&TEST_FIL,&bmp_public_buf,8,&read); if((bmp_public_buf[0] ==';')&&(bmp_public_buf[1] =='s') &&(bmp_public_buf[2] =='i')&&(bmp_public_buf[3] =='m') &&(bmp_public_buf[4] =='a')&&(bmp_public_buf[5] =='g') &&(bmp_public_buf[6] =='e')&&(bmp_public_buf[7] ==':')) { while(1) { f_read(&TEST_FIL,&temp_test,2,&read); if(sel == 1)//big pic { bmp_public_buf[row_1*(xsize_big*4)+i/2] = (char)(ascii2dec_test(&temp_test[0])<<4|ascii2dec_test(&temp_test[1])); } else { bmp_public_buf[row_1*(xsize_small*2)+i/2] = (char)(ascii2dec_test(&temp_test[0])<<4|ascii2dec_test(&temp_test[1])); } i=i+2; if(sel == 1)//big pic { if(i>=(xsize_big*4)) { i=0; row_1++; f_read(&TEST_FIL,&temp_test,9,&read); } if(row_1>ysize_big) break; } else { if(i>=(xsize_small*4)) { i=0; row_1++; f_read(&TEST_FIL,&temp_test,9,&read); } if(row_1>ysize_small) break; } } f_close(&TEST_FIL); return 1; } } f_close(&TEST_FIL); return 0; } #endif