📄 text1.c
字号:
if(key_esc)
{
key_esc_elim();
break;
}
}
break;
case 5: //粘贴
if(CanPast)
{ LCD_clr();
File_CopyPath(TempBuf,FilePathBuf); //得到新文件路径
File_Copy(strcat(TempBuf,File_NameInPath(FilePastBuf)),FilePastBuf);
if(CanPast==2&&!cy_cancel)
File_Del(FilePastBuf);
CanPast=0;
}
FileMaxNum=File_Enumer(FilePathBuf,0);
break;
case 6:
LCD_clr();
USB_Attribute();
while(1)
{
if(key_esc)
{key_esc_elim();break;}
}
break;
case 7:
File_CopyPath(FileNameBuf,FilePathBuf); //得到新文件路径,文件名称为时间
strcat(FileNameBuf,"NEW");
mCopyCodeStringToIRAM( mCmdParam.Create.mPathName,FileNameBuf);
i = CreateDirectory( ); /* 新建或者打开目录 */
while(i==ERR_FOUND_NAME)//一直创建,直到文件名不重复为止
{
NameCnt++;
sprintf(TempBuf,"NEW%d",(UINT16)NameCnt);
File_CopyPath(mCmdParam.Create.mPathName,FilePathBuf);
strcat(mCmdParam.Create.mPathName,TempBuf);
i = CreateDirectory( ); /* 新建或者打开目录 */
}
FileMaxNum=File_Enumer(FilePathBuf,0);//刷新文件数目
break;
}
break;
}
}
//完成后恢复环境--------
LCD_clr();
LCD_set_XY(0,5);
printf("Open");
LCD_set_XY(60,5);
printf("Back");
LCD_set_XY(0,0);
printf("%s",FilePathBuf);
FileRedisp(FileWhere,FileSel);
}
//---------------菜单处理函数----------------------------------------------------
#define DispMax 3
void Key_UpOper(void)
{ UINT8 FileSelBackup;
UINT8 i,Menu_j;
FileSelBackup=FileSel;
if(FileSel==0)
FileSel=FileMaxNum;
else
FileSel--;
if(FileWhere==0)//如果现在是在顶项处
{
if(DispMax>=FileMaxNum)//如果可以显示所有项。则由顶项跳到底项。
{
FileWhere=FileMaxNum;
LCD_write_english_bar(File_SelName(FilePathBuf,FileSelBackup),5,1,78,0,0);
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,FileWhere+1,78,0,1);
}
else//否则所有项下移一行。
{
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,1,78,0,1);//显示当前项目
Menu_j=FileSel;
for(i=2;i<5;i++)//显示其它项
{ Menu_j++;
if(Menu_j>FileMaxNum)
Menu_j=0;
LCD_write_english_bar(File_SelName(FilePathBuf,Menu_j),5,i,78,0,0);
}
}
}
else
{
FileWhere--;
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,FileWhere+1,78,0,1);
LCD_write_english_bar(File_SelName(FilePathBuf,FileSelBackup),5,FileWhere+2,78,0,0);
}
}
void Key_DownOper(void)
{ UINT8 FileSelBackup;
UINT8 i,Menu_j;
FileSelBackup=FileSel;
if(FileSel==FileMaxNum)
FileSel=0;
else
FileSel++;
if(FileWhere==DispMax||FileWhere==FileMaxNum)//如果位于显示末项
{
if(DispMax>=FileMaxNum)//如果可以显示所有项。则由底项跳到顶项。
{
FileWhere=0;
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,FileWhere+1,78,0,1);
LCD_write_english_bar(File_SelName(FilePathBuf,FileSelBackup),5,FileMaxNum+1,78,0,0);
}
else
{
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,4,78,0,1);
Menu_j=FileSel;
for(i=DispMax;i>0;i--)
{ Menu_j--;
if(Menu_j==255)
Menu_j=FileMaxNum;
LCD_write_english_bar(File_SelName(FilePathBuf,Menu_j),5,i,78,0,0);
}
}
}
else
{
FileWhere++;
LCD_write_english_bar(File_SelName(FilePathBuf,FileSel),5,FileWhere+1,78,0,1);
LCD_write_english_bar(File_SelName(FilePathBuf,FileSelBackup),5,FileWhere,78,0,0);
}
}
//---------------------根据文件选择号和所在位置刷新屏幕显示文件项的内容---------------------------------
void FileRedisp(UINT8 FileWhereI,UINT8 FileSelJ)
{
UINT8 i;
UINT8 Menu_j;
LCD_set_XY(0,1);
for(i=0;i<56;i++)//清除Please wait~。
LCD_write_char(' ',0);
LCD_write_english_bar(File_SelName(FilePathBuf,FileSelJ),5,FileWhereI+1,78,0,1);//显示当前选项
//显示其它选项。
Menu_j=FileSelJ;
for(i=FileWhereI;i>0;i--)//显示当前项上面部分。
{
if(Menu_j==0)
Menu_j=FileMaxNum;
else
Menu_j--;
LCD_write_english_bar(File_SelName(FilePathBuf,Menu_j),5,i,78,0,0);
}
Menu_j=FileSelJ;
for(i=FileWhereI+1;i<=DispMax;i++)//显示当前项下面部分。
{
if(i>FileMaxNum)//如果所要显示项目小于最大显示数,则只显示到FileMaxNum。
break;
if(Menu_j==FileMaxNum)
Menu_j=0;
else
Menu_j++;
LCD_write_english_bar(File_SelName(FilePathBuf,Menu_j),5,i+1,78,0,0);
}
}
void Menu_Init(void)
{
LCD_clr();
LCD_set_XY(6,2);
printf("Please wait~");
LCD_set_XY(0,5);
printf("Open");
LCD_set_XY(60,5);
printf("Back");
FileWhere=0;
FileSel=0;
FileLay=0;
strcpy(FilePathBuf,"\\*");
LCD_set_XY(0,0);
printf("%s",FilePathBuf);
FileMaxNum=File_Enumer(FilePathBuf,0);
FileRedisp(FileWhere,FileSel);
}
void Meun_InOper(void)
{
UINT8 i;
LCD_clr();
LCD_set_XY(6,2);
printf("Please wait~");
File_SelName(FilePathBuf,FileSel);
i = CH375FileOpen( );
if(i ==ERR_SUCCESS)
{
if(strcmp(File_NameType(FileNameBuf),"LCD"))
File_TextDisp();
else
File_PicDisp();
//当文件打开操作完成后恢复环境--------
LCD_clr();
LCD_set_XY(0,5);
printf("Open");
LCD_set_XY(60,5);
printf("Back");
LCD_set_XY(0,0);
printf("%s",FilePathBuf);
FileRedisp(FileWhere,FileSel);
}
else
{
LCD_set_XY(0,5);
printf("Open");
LCD_set_XY(60,5);
printf("Back");
strcpy(FilePathBuf,FileNameBuf);
strcat(FilePathBuf,"\\*");
LCD_set_XY(0,0);
printf("%s",FilePathBuf);
FileMaxNum=File_Enumer(FilePathBuf,0);
FilePlace[FileLay]=FileWhere;//进入下一个目录前,先保存这一目录的有关情况。(文件选择号。位置)
FileSaveSel[FileLay]=FileSel;
FileLay++;
FileSel=0;
FileWhere=0;
FileRedisp(FileWhere,FileSel);
}
}
void Meun_OutOper(void)
{
LCD_clr();
LCD_set_XY(6,2);
printf("Please wait~");
LCD_set_XY(0,5);
printf("Open");
LCD_set_XY(60,5);
printf("Back");
FileLay--;
File_UpPath();//退回上一目录
LCD_set_XY(0,0);
printf("%s",FilePathBuf);
FileMaxNum=File_Enumer(FilePathBuf,0);//重新计算文件数目
FileSel=FileSaveSel[FileLay]; //恢复目录所在环境
FileWhere=FilePlace[FileLay];
FileRedisp(FileWhere,FileSel);
}
//------------------------------------------------------------------------------
void USBcontrol(void)
{ uchar i;
LCD_clr();
while (!USB_Connet) // 等待U盘插入,单片机可以做其它事情
{ LCD_set_RC(1,0);
LCD_puts(USBTab[2],0);//优盘未插入
LCD_set_RC(3,5);
LCD_putc(45,0);LCD_putc(46,0);//显示 -返回
if(key_esc)
{ key_esc_elim();
return;
}
}
for ( i = 0; i < 5; i ++ ) // 检查U盘是否准备好,有些U盘不需要这一步
{
mDelay100mS( );
if ( CH375DiskReady( ) == ERR_SUCCESS ) break; // 查询磁盘是否准备好
}
// LCD_set_RC(1,0);
// LCD_puts(USBTab[1],0);//检测到U盘。
Menu_Init();
while(1)
{
if(key_left)
{
key_left_elim();
File_DealWith();
}
if(key_right)
{
key_right_elim();
}
if(key_up)
{
key_up_elim();
Key_UpOper();
}
if(key_down)
{ key_down_elim();
Key_DownOper();
}
if(key_esc)
{ key_esc_elim();
if(FileLay)
Meun_OutOper();
else
{
flash=1;
reflash=1;
return;
}
}
if(key_enter)
{ key_enter_elim();
Meun_InOper();
}
}
}
void main(void)
{ UINT8 i;
LCD_init();
LCD_clr();//清屏
InitTimer0();
CH375_INT_FLAG = 0; // 清中断标志
i = CH375LibInit( ); // 初始化CH375程序库和CH375芯片,操作成功返回0
mStopIfError( i );
CH375_INT_EN = 1; //允许CH375中断
EA = 1; // 初始化完成,开中断
while(1)
{
if(key_up)
{ key_up_elim();
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyUpState;
if(where>0)
where--;
flash=1;
}
if(key_down)
{ key_down_elim();
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyDnState;
if(where<2)
where++;
flash=1;
}
if(key_left)
{ key_left_elim();
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyLState;
flash=1;
reflash=1;
LevelCnt=0;
}
if(key_right)
{ key_right_elim();
KeyFuncIndex=KeyTab[KeyFuncIndex].KeyRState;
flash=1;
reflash=1;
LevelCnt=0;
}
if(key_enter)
{ key_enter_elim();
MenuIn();
flash=1;
}
if(key_esc)
{ key_esc_elim();
MenuOut();
flash=1;
}
if(reflash)
{
reflash=0;
LCD_clr();
KeyIndicate(KeyFuncIndex);//按键提示词语操作。
}
if(flash)
{
flash=0;
KeyFuncPtr=KeyTab[KeyFuncIndex].CurrentOperate;
(*KeyFuncPtr)();//执行当前按键的操作
}
if(KeyFuncIndex==0)
TR0=1;
else
TR0=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -