#include "mywin_inc.h" #include "lcd_pwm.h" #include "dac.h" #include "mywin_demo.h" #include "ff.h" #include "flash_manager.h" #include "system_file.h" #include "system_updata.h" #include "avi.h" #include "mp3play.h" #include "mylua.h" #include "mywin_user_stat.h" #include "mywin_user_home.h" #include "mywin_user_status_bar.h" #include "date.h" #include "arm_math.h" #include "fft2d.h" #include "mywin_user_lock.h" #include "mywin_user_animation.h" /* * * 自定义窗口示例文件 * */ void baseWin_callback (WIN_WindowStruct *win,WIN_MsgStruct *msg); //状态显示的回调函数 void stat_callback (void *t); void mywin_demo_test (void *t) { WIN_Init(); int lcd_xsize=WIN_GetWinStruct()->lcd->getLcdSizeX(); int lcd_ysize=WIN_GetWinStruct()->lcd->getLcdSizeY(); ui_setScreenBackLightPower(1); // mylua_test(); //状态显示 WIN_StatusBarStruct *statubar=0; statubar=WIN_CreatStatusBar (0,0,0,0,lcd_xsize,20); WIN_ShowWindow((WIN_WindowStruct*)statubar); //主页 WIN_HomeStruct *home=0; home=WIN_CreatHome (0,0,0,20,lcd_xsize,lcd_ysize-20); WIN_SetBackPicPath ((WIN_WindowStruct*)home,"0:/JPG/妹子1.jpg"); WIN_SetWinTitle((WIN_WindowStruct*)home,"home"); WIN_ShowWindow((WIN_WindowStruct*)home); //设置回调函数 WIN_SetMsgLoopCallBack (0,baseWin_callback); while (1) { WIN_Delay(20); } } //截图函数 void prtSc (void) { int lcd_xsize=WIN_GetWinStruct()->lcd->getLcdSizeX(); int lcd_ysize=WIN_GetWinStruct()->lcd->getLcdSizeY(); int buff_size=lcd_xsize*lcd_ysize*2+8; u8 *buff=mymalloc (buff_size); u8 scan=0x00; u8 gray=0x10; u16 w=lcd_xsize; u16 h=lcd_ysize; u8 is565=0x01; u8 rgb=0x1b; buff[0]=scan; buff[1]=gray; buff[2]=w; buff[3]=w>>8; buff[4]=h; buff[5]=h>>8; buff[6]=is565; buff[7]=rgb; static int num=1; FIL *file=mymalloc (sizeof (FIL)); char *file_name=mymalloc (256); FRESULT ret=FR_OK; sprintf (file_name,"0:/PIC/%d.pic",num); num++; ret=f_open (file,file_name,FA_CREATE_NEW|FA_WRITE); if (ret==FR_OK) { u16 *imag=(u16 *)(buff+8); UINT real=0; WIN_GetWinStruct()->lcd->getColors (imag,0,0,w,h); ret=f_write (file,buff,buff_size,&real); if (ret!=FR_OK) while (1); else MSGBOX_TipsTime (0,"截图已保存",file_name ,"确定",5000); } else MSGBOX_TipsTime (0,"文件已存在",file_name ,"确定",5000); f_close (file); myfree(file); myfree(file_name); myfree(buff); } static const char *g_powerOffItem[]={ "重启", "重启到BootLoader" }; static void creat_lock(void *ptr) { WIN_WindowStruct *win=WIN_GetCurrentWindow(); LOCK_EnterLock("0:/PIC/3.pic"); } //基本窗口的消息处理回调,用于处理一些全局消息 /* 全局响应的按键: 短按背光键: 长按开关机键: 长按销毁键: */ void baseWin_callback (WIN_WindowStruct *win,WIN_MsgStruct *msg) { WIN_KeyStruct *k=0; static int light=1; switch (msg->msg) { case WIN_MSG_INIT: break; case WIN_MSG_KEY: k=msg->data.p; if (k->shortPress&KEY_VALUE_LIGHT) { //短按背光键 light=!light; ui_setScreenBackLightPower (light); } else if(k->shortPress&KEY_VALUE_DES) { // 通知窗口线程调用函数 WIN_RunInWindow("home",creat_lock,0); } if (k->longPress&KEY_VALUE_HOME) { //长按关机键 int index=MSGBOX_Select ((WIN_WindowStruct *)0,"选择关机选项",(char **)g_powerOffItem, 2,"确定","取消"); if (index==0) { SysFile_SaveSetFile(); NVIC_SystemReset (); } else if (index==1) { SysFile_SaveSetFile(); //重启到iap并且升级 user.app 文件 (*(u32 *)0x20000000)=0xff000003; NVIC_SystemReset (); } }//if (k->longPress&KEY_VALUE_HOME) else if (k->longPress&KEY_VALUE_DES) { //长按销毁键 prtSc(); } break; case WIN_MSG_CHID: break; case WIN_MSG_EXTMSG: break; default: WIN_DefaultMsgLoop (win,msg); break; } } //状态显示的回调函数 void stat_callback (void *t) { WIN_StatStruct *stat=(WIN_StatStruct *)t; sprintf (stat->txt,"%.1f,%.1f",mem_perused()/100.0,exmem_perused()/100.0); WIN_SetInvalid ((WIN_WindowStruct *)stat); } //傅里叶变换测试 void FFT_Test (WIN_PicStruct *pic_,int t) { static float32_t *img=0; static int xsize=0; static int ysize=0; static int ttt=0; if (ttt<256) ttt++; else ttt=0; //if (img) return; if (img==0) { //复制一份图像 img=mymalloc(pic_->xsize*pic_->ysize*sizeof (float32_t)); xsize=pic_->xsize; ysize=pic_->ysize; for (int i=0;idata[i]); } } FFT2D_Struct fft2d={0}; if (FFT2D_Init(&fft2d,512)==0) { FFT2D_Rfft (&fft2d,img,xsize,ysize); for (int i=0;i<512;i++) { for (int j=0;j<512;j++) { if (((i>ttt)&&(i<512-ttt))||((j>ttt)&&(j<512-ttt))) { if (!(((i>ttt)&&(i<512-ttt))&&((j>ttt)&&(j<512-ttt)))) fft2d.imgBuff[i*512+j]=0; } } } FFT2D_Rifft (&fft2d,0); //复制到输出 for (int i=0;idata[i*xsize+j]=fft2d.imgBuff[i*512+j]; pic_->data[i*xsize+j]=GRAY2RGB (pic_->data[i*xsize+j]); } } } FFT2D_Delete (&fft2d); } //测试用代码 static void Delete_code (void ) { //LCD_PWMinit(100); // DAC_UserStruct dac={0}; // // dac.buff1=mymalloc (256*4); // dac.buff2=mymalloc (256*4); // for (int i=0;i<64;i++) dac.buff1[i]=i*4*4; // for (int i=0;i<64;i++) dac.buff2[i]=1024-i*4*4; // dac.buff_size=64*4; // dac.rate=RATE48000; // // DAC_NormalInit (&dac); // FIL *mp3f=mymalloc (sizeof (FIL)); // FILINFO *mp3f_info=malloc (sizeof (FILINFO)); // f_stat ("0:/这条街.mp3",mp3f_info); // u8 *mp3_data=mymalloc (mp3f_info->fsize); // UINT datasize=0; // f_open (mp3f,"0:/这条街.mp3",FA_READ); // f_read (mp3f,mp3_data,mp3f_info->fsize,&datasize); // mp3_play_song (mp3_data,datasize); //char txt[50]={0}; //显示开机动画 //ANIMATION_ShowGifTime (0,"0:/GIF/12.gif",10000); //显示开机图片 //loading (); //状态栏 // WIN_StatusBarStruct *statubar=0; // statubar=WIN_CreatStatusBar (0,0,0,0,LCD_GetLcdSizeX(),20); // STATUSBAR_SetRes (statubar,&res); // if (ret==0) // { STATUSBAR_SetBackPic(statubar,&pic); // pic.data+=pic.xsize*20;//重设图片位置 // } // WIN_ShowWindow((WIN_WindowStruct*)statubar); // stat=WIN_CreatStat (0,0,0,LCD_GetLcdSizeY()/2-30,20,60);//左边 // STAT_SetImg (stat,(u8*)gImage_stat_nfc); // stat=WIN_CreatStat (0,0,LCD_GetLcdSizeX()-20,LCD_GetLcdSizeY()/2-30,20,60);//右边 // STAT_SetImg (stat,(u8*)gImage_stat_bluetooth); // stat=WIN_CreatStat (0,0,LCD_GetLcdSizeX()/2-30,0,60,20);//上边 // stat->TimerCallBack=stat_bet_callback; // stat->timerId=WIN_CreatTimer ((WIN_WindowStruct *)stat,1000); // STAT_SetTxt (stat,"示例文字"); }