📄 user.c
字号:
gc_USR_HaveID3OrNot=UI_GET_ID3INFO(gc_FileLongName);
//printf("gc_USR_HaveID3OrNot=%bu\n",gc_USR_HaveID3OrNot);
if(gc_USR_HaveID3OrNot)//UI_GET_ID3INFO ,how to set the parameter of it? //lyh add
{
Dos_GetFileLongName(0,0,gc_FileLongName);
}
X_Unicode2ISN(gc_FileLongName,1);
UI_GetFileNameLength();
}
else
// if(gc_UIMode==1)//lyh add
{
tc_returnvalue=Dos_GetFileLongName(gc_UIMode,NULL,gc_FileLongName);
/*
{
U8 i;
for(i=0;i<8;i++)
{
printf("%bx\n",gc_FileLongName[5+i]);
}
}
*/
UI_GetFileNameLength();
// printf("test display\n");
}
// LCD501_Disp_FileName(&gc_FileLongName[gw_DispFileName_ByteOffset+5],gc_SongNameNDSingerName_Length-gw_DispFileName_ByteOffset,1);
//2005-2-3
}
//================================================================================================
void UI_idle_Display()//in the idle_state ,show the filename,and set some parameters,,UI_Refresh_DispAll(1)
{
if(!UI_StorageIsError())
{
//printf("State=%bx\n",gc_Menu_State);
if(gc_Menu_State==0)
{
UI_GetMusicInfo();
}
gc_AB_Cnt=0;
gc_Play_Pause_Stop_State=2;
if(gc_Menu_State==0)
{
UI_Refresh_DispAll(1);//show the name
}
}
gw_PowerOffTimer=USER_SetIdleTime[gc_USR_PowerOffCount];
//gb_DisplayEvent_Happened=0;
gb_ShowNowSongNumberFG=0;
gc_LongKey_Speed=9;//add by xyq
gc_FileNameRollTimer=1;//set the interval time to roll the filename
}
//================================================================================================
void UI_Refresh_DispAll(bit DispFileName)//display all the icon in the initial state
{
//printf("Timer=%bx\n",gc_Busy_Timer);
if(!gc_Busy_Timer) //if the refresh time is coming on
{
LCD501_Clear_ALL();
//SPLC501_Erase_OnePage(3);
UI_Disp_Page0();
LCD501_Disp_CurrentFileMode(DSP_MenuMODE[gc_UIMode]);//DSP_MenuMODE[] ={KDSP_MP3_MODE, KDSP_DVRD_MODE, KDSP_DVRE_MODE}
LCD501_Disp_Bitrate(0);//space//at somewhere to show the bitrate.
if(gc_PlayMode==PLAY_ALL)
{
LCD501_Disp_FileIndex_InDIR(gw_FileIndex[gc_UIMode],gw_FileTotalNumber[gc_UIMode]);//show the fileindex in the dir
}else{
//lyh del LCD501_Disp_FileIndex_InDIR(G_PlayListIndex,G_PlayListLen);
}
LCD501_Disp_HHMMSS(0);//show time
LCD501_Playing_Pause_Stop_Record(gc_Play_Pause_Stop_State);//show the state
{
if(DispFileName)//0 or 1
{
// if(gw_FileIndex[gc_UIMode])
if(gw_FileTotalNumber[gc_UIMode])
{
//printf("display file\n");
X_G_OverStep_DispArea=LCD501_Disp_FileName(&gc_FileLongName[gw_DispFileName_ByteOffset+5],gc_SongNameNDSingerName_Length-gw_DispFileName_ByteOffset,1);
//printf("X_G_OverStep_DispArea=%bu\n",X_G_OverStep_DispArea);
}else{
LCD501_Disp_NoFile(gc_UIMode);
}
}
}
gb_DisplayEvent_Happened=0;
gb_ShowNowSongNumberFG=0;
}
}
//================================================================================================
void UI_RollFileName()//if the filename beyond the lcd ,so rolling ,the same with lrc
{
if((!gc_FileNameRollTimer)&&(!gc_Busy_Timer)&&(gw_FileTotalNumber[gc_UIMode])&&(!gc_Menu_State)&&(X_G_OverStep_DispArea))
{
#ifdef Support_LRCFile//gc_FileNameRollTimer indicated the interval to show the filename
if((gc_LrcFileName_Exist) && (gc_SystemStateMode==SYSTEM_STATE1_PLAYING || gc_SystemStateMode==STATE_PLAY_PAUSE) )//&& X_G_LRC_HaveGetFirstLyrics)
{
LCD501_Disp_FileName(&gc_LrcDisplayBuf[gw_DispFileName_ByteOffset],gc_LrcCurrentLen-gw_DispFileName_ByteOffset,1);
}else
#endif//#ifdef Support_LRCFile
{
if(gc_SystemStateMode==STATE_FR||gc_SystemStateMode==STATE_FF)goto end;
LCD501_Disp_FileName(&gc_FileLongName[gw_DispFileName_ByteOffset+5],gc_SongNameNDSingerName_Length-gw_DispFileName_ByteOffset,1);
}
end:
gc_FileNameRollTimer=1;//check the time,if beyond ,rolling
}
}
//================================================================================================
void UI_GetFileNameLength()
{
// U8 tw_Lenth;
gc_SongNameNDSingerName_Length=gc_FileLongName[4];
// tw_Lenth =(U16)((gc_FileLongName[0]<<8)|(gc_FileLongName[1]));
// gc_SongNameNDSingerName_Length=(U8)tw_Lenth;
}
//================================================================================================
void Main_Get_FreeMemory()//will update the library!
{
U32 tdw_TotalFreeClusNumber;//lyh add
LCD501_Disp_CheckDisk();
tdw_TotalFreeClusNumber=USER_Get_SYSInformation(0);//call this function need to update the library.
gdw_Dos_FreeMemorySizeMB=((U32)tdw_TotalFreeClusNumber*512)*10/1024/1024;
// printf("gdw_Dos_FreeMemorySizeMB=%lx\n",gdw_Dos_FreeMemorySizeMB);
}
//================================================================================================
bit Func10_CheckLRC()
{
if(gc_SystemStateMode == SYSTEM_STATE1_PLAYING&&gc_LrcFileName_Exist)
{
X_Get_LRC_TimeStamp();
if(gb_LrcGetTimeOrNot)
{gb_LrcGetTimeOrNot=0;
X_Get_LRC_Lyrics();//read the sector to store in a buffer,so if offset more than the maxnumber,stop;if than a sector,get another sector;if the end of the file ,restart.
X_G_OverStep_DispArea=LCD501_Disp_FileName(gc_LrcDisplayBuf,gc_LrcCurrentLen,1);
// LCD501_Disp_FileName(&gc_LrcDisplayBuf[gw_DispFileName_ByteOffset],gc_LrcCurrentLen-gw_DispFileName_ByteOffset,1);
gw_DispFileName_ByteOffset=0;
}
}
return 0;
}
//================================================================================================
void UI_FFFR(bit XFFFR)//go the next or ahead file,File_Close(NULL, K_DOS_ReadFile, 0);
{ //->Search_File(GS_SearchMode,gc_UIMode,0);
//if state_waitidle,after search file ,then show the related informations
switch(gc_SystemStateMode)
{
case SYSTEM_STATE0_IDLE:
if(gw_FileIndex[gc_UIMode]==0)
return;//if no this line,error will happen
break;
case SYSTEM_STATE1_PLAYING:
gb_Openfile = TRUE; // Make Openfile post-processor activity
break;
case STATE_PLAY_PAUSE:
gc_SystemStateMode = SYSTEM_STATE0_IDLE; //return to IDLE State
break;
}
System_NextOrPrev(XFFFR, 1, gc_UIMode);
if(gc_SystemStateMode==STATE_WaitDEL)//which the different between Systemstate and UIstate?
{
UI_GetMusicInfo();
LCD501_Disp_FileIndex_InDIR(gw_FileIndex[gc_UIMode],gw_FileTotalNumber[gc_UIMode]);
LCD501_Disp_REP1ALL(gc_PlaySequenceMode);
}
//if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)gb_ShowNowSongNumberFG=1;
gc_Busy_Timer=0;
gb_DisplayEvent_Happened=1;//lyh add
gw_DispFileName_ByteOffset=0;//lyh add
X_G_OverStep_DispArea=1;//lyh add
//gc_TheSameLRC=0;//lyh add
}
//================================================================================================
void UI_Trigger_AutonDisplay()//set gb_ShowNowSongNumberFG=true;gb_DisplayEvent_Happened = false;gc_Busy_Timer = 64;
{
gb_ShowNowSongNumberFG=true;
gb_DisplayEvent_Happened = false;
gc_Busy_Timer = 64; //eight seconds
}
//================================================================================================
//===============================THE UI_MENU_OPERATE FUNCTION=================================================================
//================================================================================================
void UI_Menu_Operate(U8 TempEvent)//gb_ShowNowSongNumberFG = false;gb_DisplayEvent_Happened = false;
{ //get the previous menu_state,tempevent,get the new state,
U8 TempState; //then show related icon,change dsp,set some variables
U8 code StateChangeTable[][6]={
//event FF FR PLAY Vol+ Vol- MODE gc_Menu_State
S_Null, S_Null, S_Null, S_Null, S_Null, S_Mode_Mu,//0
S_PMode, S_Info, S_Mode_Mu, S_Null, S_Null, S_Null,//1 -->menu mode
S_Eq, S_MMode, S_PMode_NOREP, S_Null, S_Null, S_Null,//2 -->menu play mode
S_Del, S_PMode, S_EQ_Norm, S_Null, S_Null, S_Null,//3 -->menu EQ
S_Set, S_Eq, S_Del_One, S_Null, S_Null, S_Null,//4 -->menu delete
S_Info, S_Del, S_Set_Backlit, S_Null, S_Null, S_Null,//5 -->menu seetings
S_MMode, S_Set, S_Info_TotalMemory, S_Null, S_Null, S_Null,//6 -->menu Info
S_Mode_Vo, S_Mode_FM, S_Null, S_PlayList_All, S_Info_TotalMemory, S_Null,//7 -->mode music
S_Mode_FM, S_Mode_Mu, S_Null, S_PlayList_All, S_Info_TotalMemory, S_Null,//8 -->mode voice
S_PMode_REP1, S_PMode_Intro, S_Null, S_EQ_Norm, S_PlayList_All, S_Null,//9 -->playmode no rep
S_PMode_REPA, S_PMode_NOREP, S_Null, S_EQ_Norm, S_PlayList_All, S_Null,//10 -->playmode rep 1
S_PMode_Random, S_PMode_REP1, S_Null, S_EQ_Norm, S_PlayList_All, S_Null,//11 -->playmode rep all
S_PMode_Intro, S_PMode_REPA, S_Null, S_EQ_Norm, S_PlayList_All, S_Null,//12 -->playmode Random
S_PMode_NOREP, S_PMode_Random, S_Null, S_EQ_Norm, S_PlayList_All, S_Null,//13 -->playmode Intro
// S_PMode_REP1, S_PMode_Intro, S_Null, S_EQ_Norm, S_DSP_UNSURROUND, S_Null,//9 -->playmode no rep
// S_PMode_REPA, S_PMode_NOREP, S_Null, S_EQ_Norm, S_DSP_UNSURROUND, S_Null,//10 -->playmode rep 1
// S_PMode_Random, S_PMode_REP1, S_Null, S_EQ_Norm, S_DSP_UNSURROUND, S_Null,//11 -->playmode rep all
// S_PMode_Intro, S_PMode_REPA, S_Null, S_EQ_Norm, S_DSP_UNSURROUND, S_Null,//12 -->playmode Random
// S_PMode_NOREP, S_PMode_Random, S_Null, S_EQ_Norm, S_DSP_UNSURROUND, S_Null,//13 -->playmode Intro
S_EQ_DBB, S_EQ_SURROUND, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//14 -->EQ normal
S_EQ_Jazz, S_EQ_Norm, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//15 -->EQ dbb
S_EQ_Disc, S_EQ_DBB, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//16 -->EQ jazz
S_EQ_POP, S_EQ_Jazz, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//17 -->EQ disc
S_EQ_Clas, S_EQ_Disc, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//18 -->EQ pop
S_EQ_SURROUND, S_EQ_POP, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//19 -->EQ clas
S_EQ_Norm, S_EQ_Clas, S_Null, S_VSP_Norm, S_PMode_NOREP, S_Null,//20 -->EQ SRS
S_VSP_Slow1, S_VSP_Speed2, S_Null, S_Del_One, S_EQ_Norm, S_Null,//21 -->S_VSP_Norm
S_VSP_Slow2, S_VSP_Norm, S_Null, S_Del_One, S_EQ_Norm, S_Null,//22 -->S_VSP_Slow1
S_VSP_Speed1, S_VSP_Slow1, S_Null, S_Del_One, S_EQ_Norm, S_Null,//23 -->S_VSP_Slow2
S_VSP_Speed2, S_VSP_Slow2, S_Null, S_Del_One, S_EQ_Norm, S_Null,//24 -->S_VSP_Speed1
S_VSP_Norm, S_VSP_Speed1, S_Null, S_Del_One, S_EQ_Norm, S_Null,//25 -->S_VSP_Speed2
S_Set_Contrast, S_Set_Default, S_Set_Backlit, S_Info_TotalMemory, S_Del_One, S_Null,//26 -->setting backlight
S_Set_Idletime, S_Set_Backlit, S_Set_Contrast, S_Info_TotalMemory, S_Del_One, S_Null,//27 -->setting contrast
S_Set_Language, S_Set_Contrast, S_Set_Idletime, S_Info_TotalMemory, S_Del_One, S_Null,//28 -->setting idle time
S_Set_Default, S_Set_Idletime, S_Set_Language, S_Info_TotalMemory, S_Del_One, S_Null,//29 -->setting Current HZK
S_Set_Backlit, S_Set_Language, S_Null, S_Info_TotalMemory, S_Del_One, S_Null,//30 -->setting default setting
S_Set_Backlit_20, S_Set_Backlit_Off, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//31 -->backlight 10
S_Set_Backlit_30, S_Set_Backlit_10, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//32 -->backlight 20
S_Set_Backlit_60, S_Set_Backlit_20, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//33 -->backlight 30
S_Set_Backlit_Prem, S_Set_Backlit_30, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//34 -->backlight 60
S_Set_Backlit_Off, S_Set_Backlit_60, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//35 -->backlight Prem
S_Set_Backlit_10, S_Set_Backlit_Prem, S_Null, S_Set_Contrast_0, S_Set_Language_ENG, S_Set_Backlit,//36 -->backlight Off
S_Set_Contrast_1, S_Set_Contrast_9, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//37 -->contrast 0
S_Set_Contrast_2, S_Set_Contrast_0, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//38 -->contrast 1
S_Set_Contrast_3, S_Set_Contrast_1, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//39 -->contrast 2
S_Set_Contrast_4, S_Set_Contrast_2, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//40 -->contrast 3
S_Set_Contrast_5, S_Set_Contrast_3, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//41 -->contrast 4
S_Set_Contrast_6, S_Set_Contrast_4, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//42 -->contrast 5
S_Set_Contrast_7, S_Set_Contrast_5, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//43 -->contrast 6
S_Set_Contrast_8, S_Set_Contrast_6, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//44 -->contrast 7
S_Set_Contrast_9, S_Set_Contrast_7, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//45 -->contrast 8
S_Set_Contrast_0, S_Set_Contrast_8, S_Null, S_Set_Idletime_Off, S_Set_Backlit_10, S_Set_Contrast,//46 -->contrast 9
S_Set_Idletime_10, S_Set_Idletime_Prem, S_Null, S_Set_Language_ENG, S_Set_Contrast_0, S_Set_Idletime,//47 -->idle off
S_Set_Idletime_30, S_Set_Idletime_Off, S_Null, S_Set_Language_ENG, S_Set_Contrast_0, S_Set_Idletime,//48 -->idle 3
S_Set_Idletime_60, S_Set_Idletime_10, S_Null, S_Set_Language_ENG, S_Set_Contrast_0, S_Set_Idletime,//49 -->idle 5
S_Set_Idletime_Prem, S_Set_Idletime_30, S_Null, S_Set_Language_ENG, S_Set_Contrast_0, S_Set_Idletime,//50 -->idle 10
S_Set_Idletime_Off, S_Set_Idletime_60, S_Null, S_Set_Language_ENG, S_Set_Contrast_0, S_Set_Idletime,//51 -->idle 30
S_Del_All, S_Del_All, S_Null, S_Set_Backlit, S_VSP_Norm, S_Null,//52 -->del 1
S_Del_One, S_Del_One, S_Disk_FMTConfirm, S_Set_Backlit, S_VSP_Norm, S_Null,//53 -->del all
S_Set_Language_CHN, S_Set_Language_Ger, S_Null, S_Set_Backlit_10, S_Set_Idletime_Off, S_Set_Language,//54 -->English HZK
S_Set_Language_BIG, S_Set_Language_ENG, S_Null, S_Set_Backlit_10, S_Set_Idletime_Off, S_Set_Language,//55 -->chinese HZK
S_Set_Language_JAP, S_Set_Language_CHN, S_Null, S_Set_Backlit_10, S_Set_Idletime_Off, S_Set_Language,//56 -->BIG HZK
S_Set_Language_Ger, S_Set_Language_BIG, S_Null, S_Set_Backlit_10, S_Set_Idletime_Off, S_Set_Language,//57 -->JAP HZK
S_Set_Language_ENG, S_Set_Language_JAP, S_Null, S_Set_Backlit_10, S_Set_Idletime_Off, S_Set_Language,//58 -->GER HZK
S_Info_FreeMemory, S_Info_FWVersion, S_Disp_TotalMemory, S_Mode_Mu, S_Set_Backlit, S_Null,//59--->Info total memory
S_Info_FWVersion, S_Info_TotalMemory, S_Disp_FreeMemory, S_Mode_Mu, S_Set_Backlit, S_Null,//60--->Info free memory
S_Info_TotalMemory, S_Info_FreeMemory, S_Disp_FWVersion, S_Mode_Mu, S_Set_Backlit, S_Null,//61--->Info f/w version
S_Disk_FMTCancel, S_Disk_FMTCancel, S_Null, S_Disk_FMTConfirm, S_Disk_FMTConfirm, S_Del_All,//62--->format confirm
S_Disk_FMTConfirm, S_Disk_FMTConfirm, S_Null, S_Disk_FMTCancel, S_Disk_FMTCancel, S_Del_All,//63--->format cancel
S_Mode_Mu, S_Mode_FM, S_Mode_Record, S_PMode_NOREP, S_Info_TotalMemory, S_Null,//64 -->mode record
S_Select_RecWave, S_Select_RecWave, S_Null, S_Select_RecASF, S_Select_RecASF, S_Mode_Record,//65-->record WAV
S_Select_RecASF, S_Select_RecASF, S_Null, S_Select_RecWave, S_Select_RecWave, S_Mode_Record,//66-->record ASF
S_Null, S_Null, S_Null, S_Null, S_Null, S_Info_TotalMemory,//67--->DispInfo total memory
S_Null, S_Null, S_Null, S_Null, S_Null, S_Info_FreeMemory,//68--->DispInfo free memory
S_Null, S_Null, S_Null, S_Null, S_Null, S_Info_FWVersion,//69--->DispInfo f/w version
S_PlayList_Favorite, S_PlayList_Favorite, S_Null, S_PMode_NOREP, S_Mode_Mu, S_Null, //70--->Playlist all.
S_PlayList_All, S_PlayList_All, S_Null, S_PMode_NOREP, S_Mode_Mu, S_Null, //71--->Playlist favorite.
// S_PlayList_Favorite, S_PlayList_Favorite, S_Null, S_DSP_UNSURROUND, S_Mode_Mu, S_Null, //70--->Playlist all.
// S_PlayList_All, S_PlayList_All, S_Null, S_DSP_UNSURROUND, S_Mode_Mu, S_Null, //71--->Playlist favorite.
S_Mode_Mu, S_Mode_Vo, S_FM_BackMode, S_PMode_NOREP, S_Info_TotalMemory, S_Null,//72-->mode FM.
S_FM_AutoSearch, S_FM_Sensitivity, S_Mode_FM, S_FM_BackMode, S_FM_BackMode, S_Null,//73-->S_FM_BackMode
S_FM_ManualSearch, S_FM_BackMode, S_Null, S_FM_AutoSearch, S_FM_AutoSearch, S_Null,//74-->S_FM_AutoSearch
S_FM_PresetSearch, S_FM_AutoSearch, S_Null, S_FM_ManualSearch, S_FM_ManualSearch, S_Null,//75-->S_FM_ManualSearch
S_FM_Channel, S_FM_ManualSearch, S_Null, S_FM_PresetSearch, S_FM_PresetSearch, S_Null,//76-->S_FM_PresetSearch
S_FM_Sensitivity, S_FM_PresetSearch, S_FM_Stereo, S_FM_Channel, S_FM_Channel, S_Null,//77-->S_FM_Channel
S_FM_Mono, S_FM_Mono, S_Null, S_FM_Stereo, S_FM_Stereo, S_FM_Channel,//78-->S_FM_Stereo
S_FM_Stereo, S_FM_Stereo, S_Null, S_FM_Mono, S_FM_Mono, S_FM_Channel,//79-->S_FM_Mono
S_FM_BackMode, S_FM_Channel, S_FM_Sensitivity_Hi,S_FM_Sensitivity, S_FM_Sensitivity, S_Null,//80-->S_FM_Sensitivity
S_FM_Sensitivity_Low,S_FM_Sensitivity_Low,S_Null, S_FM_Sensitivity_Hi, S_FM_Sensitivity_Hi,S_FM_Sensitivity,//81-->S_FM_Sensitivity_Hi
S_FM_Sensitivity_Hi, S_FM_Sensitivity_Hi, S_Null, S_FM_Sensitivity_Low, S_FM_Sensitivity_Low,S_FM_Sensitivity,//82-->S_FM_Sensitivity_Low
// S_DSP_UNSURROUND, S_DSP_UNSURROUND, S_Null, S_PMode_NOREP, S_PlayList_All, S_Null,//83-->mode FM.
// S_DSP_SURROUND, S_DSP_SURROUND, S_Null, S_PMode_NOREP, S_PlayList_All, S_Null,//84-->mode FM.
};
//this is a statue change form,the right is the statue of the menu,when
{
gw_DispFileName_ByteOffset=0;//lyh add
if(TempEvent>5) return;
if(TempEvent==2)//play key<=>mode key//in the multimenu....
{
TempEvent=5;
}else{
if(TempEvent==5)
TempEvent=2;
}
TempState = gc_Menu_State;//0->mu,mu->vo
if(TempState==0)
{
gc_Menu_State=S_Mode_Mu+gc_UIMode;//differ the statue is mode--music7 or voice8
}else{
gc_Menu_State = StateChangeTable[TempState][TempEvent];
}
}
switch(TempEvent)
{
case 2://SETTING
if(TempState==S_Del)
{
Playing_To_Stop();
}else if(TempState==S_Info_TotalMemory)
{
//USER_Get_SYSInformation(1);
LCD501_Disp_TotalMemory();//get the memory,will call USER_Get_SYSInformation(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -