Ejemplo n.º 1
0
/***********************************************************
* 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	
}
Ejemplo n.º 2
0
	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;
	}