Files
MKS-TFT35-Firmware/User/ui/draw_ui.cpp
makerbase-mks 3a0357562d update
2020-05-21 11:39:24 +08:00

2019 lines
40 KiB
C++

#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