/*********************************************************** * Function: * Description: * Input: * Input: * Output: * Return: * Others: ***********************************************************/ static void keypress( unsigned int key ) { #if 0 switch( key ) { case KEY_MENU: if( ( data_fetch_comp == 1 ) || ( usb_error == 1 ) ) { usb_error = 0; data_fetch_comp = 0; pMenuItem = &Menu_5_other; pMenuItem->show( ); //if(tid_write_file) ///测试会复位 //if(tid_write_file != RT_NULL) ///测试OK /* 调度器上锁,上锁后,将不再切换到其他线程,仅响应中断*/ rt_enter_critical( ); if( tid_write_file != RT_NULL && tid_write_file->stat != RT_THREAD_CLOSE ) ///测试OK { rt_thread_delete( tid_write_file ); } /* 调度器解锁*/ rt_exit_critical( ); } DataOutStartFlag = 0; DataOutStartFlag = 0; OUT_DataCounter = 0; DataOutInFlag = 0; break; case KEY_OK: //本地升级 if( DataOutInFlag == 1 ) { DataOutInFlag = 2; //导出数据类型选择标志 USB_OUTFileSe( OUT_DataCounter ); } //文件导出 else if( DataOutInFlag == 2 ) { DataOutInFlag = 0; if( ( OUT_DataCounter >= 1 ) && ( OUT_DataCounter <= 3 ) ) { DataOutStartFlag = OUT_DataCounter; //在timetick中显示导出过程 } tid_write_file = rt_thread_create( "writefile", thread_usbout_udisk, (void*)msg, 1024, 8, 5 ); if( tid_write_file != RT_NULL ) { msg( "I导出存储的数据" ); rt_thread_startup( tid_write_file ); }else { msg( "E错误按菜单键" ); usb_error = 1; } } break; case KEY_UP: if( DataOutInFlag == 2 ) { if( OUT_DataCounter <= 1 ) { OUT_DataCounter = 3; } else { OUT_DataCounter--; } USB_OUTFileSe( OUT_DataCounter ); } break; case KEY_DOWN: if( DataOutInFlag == 2 ) { if( OUT_DataCounter >= 3 ) { OUT_DataCounter = 1; } else { OUT_DataCounter++; } USB_OUTFileSe( OUT_DataCounter ); } break; } #endif }
static void keypress(unsigned int key) { switch(KeyValue) { case KeyValueMenu: DF_LOCK=0; CounterBack=0; USB_data_flag=0; if(Exit_updata==1) { Exit_updata=2; lcd_fill(0); lcd_text12(0,3,"是否退出U盘本地更新",19,LCD_MODE_SET); lcd_text12(24,18,"按确认键退出",12,LCD_MODE_SET); lcd_update_all(); } else if((check_error==1)||(data_fetch_comp==1)) { check_error=0; data_fetch_comp=0; pMenuItem=&Menu_5_other; pMenuItem->show(); if(tid_write_file) rt_thread_delete(tid_write_file); if(tid_file_update) rt_thread_delete(tid_file_update); } DataOutStartFlag=0; DataOutStartFlag=0; OUT_DataCounter=0; DataOutInFlag=0; in_out=1; break; case KeyValueOk: //退出本地U盘升级 if(Exit_updata==2) { Exit_updata=0; pMenuItem=&Menu_5_other; pMenuItem->show(); if(tid_write_file) rt_thread_delete(tid_write_file); if(tid_file_update) rt_thread_delete(tid_file_update); } //本地升级 if(DataOutInFlag==1) { if(in_out==1) { DataOutInFlag=2;//导出数据类型选择标志 USB_OUTFileSe(OUT_DataCounter); } else if(in_out==2) { tid_file_update= rt_thread_create( "fileupdate", thread_usb_update, (void*)msg, 1024, 9, 5 ); if( tid_file_update != RT_NULL ) { Exit_updata=1; msg("I文件升级"); rt_thread_startup(tid_file_update); } else { Exit_updata=0; msg("E升级线程创建失败"); } } } //文件导出 else if(DataOutInFlag==2) { DataOutInFlag=0; if((OUT_DataCounter>=1)&&(OUT_DataCounter<=3)) DataOutStartFlag=OUT_DataCounter;//在timetick中显示导出过程 tid_write_file= rt_thread_create( "writefile", thread_usbout_udisk, (void*)msg, 1024, 8, 5 ); if( tid_write_file != RT_NULL ) { msg("I导出存储的数据"); rt_thread_startup( tid_write_file); } else { msg("E线程创建失败"); } } break; case KeyValueUP: if(!Exit_updata) { if(DataOutInFlag==1) { in_out=1; DataInOutSe(1); } else if(DataOutInFlag==2) { OUT_DataCounter--; if(OUT_DataCounter<=1) OUT_DataCounter=1; USB_OUTFileSe(OUT_DataCounter); } } break; case KeyValueDown: if(!Exit_updata) { if(DataOutInFlag==1) { in_out=2; DataInOutSe(2); } else if(DataOutInFlag==2) { OUT_DataCounter++; if(OUT_DataCounter>=3) OUT_DataCounter=3; USB_OUTFileSe(OUT_DataCounter); } } break; } KeyValue=0; }