Exemplo n.º 1
0
void  Camra_Take_Exception(void)
{
         if(CameraState.camera_running==1)
         {
	           if((CameraState.timeoutCounter++)>=3)  // 每发送一包,清除,只有单包发送超过3秒没返回才认为失败 
	           {  
	               if(CameraState.timeoutCounter==4)
	               {
	                      rt_kprintf("\r\n  Camera %d  Error\r\n",Camera_Number);     
                            Power_485CH1_OFF;  // 第一路485的电			关电工作
	               }

		       if(CameraState.timeoutCounter==5)
	               {
				  Power_485CH1_ON;  // 第一路485的电		   开	电工作      
	               }

			 if(CameraState.timeoutCounter==7)
	               {
						      //------------  Normal  Process  --------------
						      //FeedDog;
						         End_Camera();		
							  
							//  Power_485CH1_OFF;  // 第一路485的电			关电工作
							  rt_kprintf("\r\n  Camera %d   Try again r\n",Camera_Number);     
							  WatchDog_Feed();
							  delay_ms(500);  // end--duration--new start	 
							  WatchDog_Feed();
							  Power_485CH1_ON;  // 第一路485的电		   开	电工作      
							  delay_ms(1000);  // end--duration--new start	     
							  WatchDog_Feed();   
			                            //------------  Multi Take Process  ------------  
					                  if(1==MultiTake.Taking)
					                  {
					                          MultiTake_Exception();
					                  }
							  else
							 {    //  单次拍照
			                                   SingleCamera_TakeRetry++;
								if(SingleCamera_TakeRetry>=3)
									{
			                                                  SingleCamera_TakeRetry=0;//clear
										 rt_kprintf("\r\n     单路拍照超过最大次数!\r\n");  
										 SingleCamra_TakeResualt_BD=1;
									}
								else
								   	{    // continue operate this  camera 
			                              Start_Camera(Camera_Number);
										  //rt_kprintf("\r\n  重新拍 %d \r\n",Camera_Number); 
								   	}
							 } 
			 	}	  
				  
	           }
         }




}
Exemplo n.º 2
0
void DF_Erase(void)
{
    u16 i = 0;
    /*
         1. 从0x1000    4K  开始擦除28K     7 sector
         2.擦除56个扇区   7 个32k block
      */

    DF_TAKE;
    rt_kprintf("\r\n  ISP erase start\r\n");
    //  -----erase        28 K   area  -------------
    for(i = 0; i < 7; i++) // 7  secotor
    {
        WatchDog_Feed();
        SST25V_SectorErase_4KByte(ISP_StartArea + i * 0x1000);
        DF_delay_ms(220);
        WatchDog_Feed();
    }
    //----------- erase  32k
    for(i = 0; i < 7; i++) // 56sector
    {
        WatchDog_Feed();
        SST25V_BlockErase_32KByte(0x8000 + i * 0x8000);
        DF_delay_ms(800);
        WatchDog_Feed();
    }
    DF_RELEASE;
    rt_kprintf("\r\n  ISP erase OK DFReady\r\n");
}
Exemplo n.º 3
0
u8      Api_Config_read(u8 *name,u16 ID,u8* buffer, u16 Rd_len)    //  读取Media area ID 是报数
{
    if(strcmp((const char*)name,config)==0)
    {
        DF_ReadFlash(ConfigStart_offset, 0, buffer, Rd_len);
        DF_delay_ms(80); 	// large content delay
        return true;
    }
    if(strcmp((const char*)name,jt808)==0)
    {
        WatchDog_Feed();
        DF_ReadFlash(JT808Start_offset, 0, buffer, Rd_len);
        DF_delay_ms(100); // large content delay
        return true;
    }
    if(strcmp((const char*)name,tired_config)==0)
    {
        DF_ReadFlash(TiredCondifg_offset, 0, buffer, Rd_len);
        DF_delay_ms(10);
        return true;
    }
    if(strcmp((const char*)name,BD_ext_config)==0)
    {
        DF_ReadFlash(DF_BD_Extend_Page, 0, buffer, Rd_len);
        DF_delay_ms(10);
        return true;
    }
    return false;

}
Exemplo n.º 4
0
//-----------------------------------------------------------------------------------------------------------------------------
u8 SaveCycleGPS(u32 cyclewr, u8 *content , u16 saveLen)
{
    /*
           //old  NOTE : Flash  1 page = 512 Bytes  ; 1 Record = 32 Bytes ;  1page= 16 Records   1Sector=8Page=128Records
           NOTE : Flash  1 page = 512 Bytes  ; 1 Record = 128 Bytes ;  1page= 4Records   1Sector=8Page=32Records
    */
    u32  pageoffset = 0; //Page 偏移
    u32  InPageoffset;   //页内Record偏移
    u16  InPageAddr = 0; //页内 地址偏移
    //	u8   reg[1]={0};
    u8   rd_back[128];
    u16  i = 0, retry = 0;

    //----------------------------------------------------------------------------------------------
    //   1. Judge  Whether  needs to Erase page
    pageoffset = (u32)(cycle_write >> 2);            // 计算出 Page 偏移  除以4 (每个page能放4条记录)
    InPageoffset = cycle_write - (u32)(pageoffset << 2); // 计算出 页内偏移地址
    InPageAddr = (u16)(InPageoffset << 7);       // 计算出页内 字节   乘以 128 (每个记录128个字节)
    if(((pageoffset % 8) == 0) && (InPageoffset == 0)) // 判断是否需要擦除Sector  被移除到下一个Sector  1Sector=8Page
    {
        WatchDog_Feed();
        SST25V_SectorErase_4KByte((pageoffset + CycleStart_offset)*PageSIZE);    // erase Sector
        DF_delay_ms(60);
        if(GB19056.workstate == 0)
            rt_kprintf("\r\n Erase Cycle Sector : %d\r\n", (pageoffset >> 3));
    }
Exemplo n.º 5
0
//-----------------------------------------------------------------------------------------------------------------------------
u8 SaveCycleGPS(u32 cyclewr,u8 *content ,u16 saveLen) 
{
  /*
     NOTE : Flash  1 page = 512 Bytes  ; 1 Record = 32 Bytes ;  1page= 16 Records   1Sector=8Page=128Records
  */
    u32  pageoffset=0;   //Page 偏移
    u32  InPageoffset;   //页内Record偏移
    u16  InPageAddr=0;   //页内 地址偏移 
	u8   reg[1]={0};
	u8   rd_back[40];
	u16  i=0,retry=0;

  //----------------------------------------------------------------------------------------------
  //   1. Judge  Whether  needs to Erase page 
  
     pageoffset=(u32)(cycle_write>>4);                // 计算出 Page 偏移  除以16  
     InPageoffset=cycle_write-(u32)(pageoffset<<4);   // 计算出 页内偏移地址 
     InPageAddr=(u16)(InPageoffset<<5);           // 计算出页内 字节   乘以 32 (每个记录32个字节)
     if(((pageoffset%8)==0)&&(InPageoffset==0))  // 判断是否需要擦除Sector  被移除到下一个Sector  1Sector=8Page  
     {
        WatchDog_Feed();
		SST25V_SectorErase_4KByte((pageoffset+CycleStart_offset)*PageSIZE);      // erase Sector		
		DF_delay_ms(20); 
	    rt_kprintf("\r\n Erase Cycle Sector : %d\r\n",(pageoffset>>3));       
	 }
Exemplo n.º 6
0
//  1 .  循环存储
u8       Api_cycle_write(u8 *buffer, u16 len)
{
    // if(rt_mutex_take(DF_lock_mutex,150)==RT_EOK)
    {
        WatchDog_Feed();
        if( SaveCycleGPS(cycle_write,buffer,len))
        {   //---- updata pointer   -------------
            cycle_write++;
            if(cycle_write>=Max_CycleNum)
                cycle_write=0;
            DF_Write_RecordAdd(cycle_write,cycle_read,TYPE_CycleAdd);
            DF_delay_us(20);
            //-------------------------------
            // rt_mutex_release(DF_lock_mutex);  //  释放
            return true;
        }
        else
        {
            //-------------------------------
            // rt_mutex_release(DF_lock_mutex);  //  释放
            return  false;
        }
    }
    //	else
    //	 return false;
}
Exemplo n.º 7
0
	u8    Api_DFdirectory_Delete(u8* name)
 	{ 
	   
              if(strcmp((const char*)name,voice)==0)
		{
		                 WatchDog_Feed();    
				   SST25V_BlockErase_32KByte((SoundStart_offdet<<9));
				   DF_delay_ms(300);  
				   WatchDog_Feed(); 
			    return true;
               }
		if(strcmp((const char*)name,camera_1)==0)
		{
		       WatchDog_Feed(); 
                     SST25V_BlockErase_64KByte((PicStart_offset<<9));      
			DF_delay_ms(500);   	
			WatchDog_Feed(); 
			return true;		 
               }
		if(strcmp((const char*)name,camera_2)==0)
		{
		       WatchDog_Feed(); 
                     SST25V_BlockErase_64KByte((PicStart_offset2<<9));   
			DF_delay_ms(500);   	
			WatchDog_Feed(); 
			return true;			 
               }
		if(strcmp((const char*)name,camera_3)==0)
		{
		         WatchDog_Feed(); 
                       SST25V_BlockErase_64KByte((PicStart_offset3<<9));    
			  DF_delay_ms(500);   
			  WatchDog_Feed(); 
			  return true;	 		   
               }
	       if(strcmp((const char*)name,camera_4)==0)
		{
		        WatchDog_Feed(); 
                       SST25V_BlockErase_64KByte((PicStart_offset4<<9));   
		         DF_delay_ms(500);   
			  WatchDog_Feed(); 	 
			  return true;			   
               }  
		  return false; 
 	}
Exemplo n.º 8
0
u8    Api_Config_Recwrite_Large(u8 *name,u16 ID,u8* buffer, u16 wr_len)  // 更新最新记录
{
    if(strcmp((const char*)name,jt808)==0)
    {
        WatchDog_Feed();
        DF_WriteFlashSector(JT808Start_offset, 0, buffer, wr_len);  // formal  use
        WatchDog_Feed();
        DF_WriteFlashSector(JT808_BakSetting_offset,0,buffer,wr_len); // bak  setting
        WatchDog_Feed();
        DF_WriteFlashSector(JT808_Bak2Setting_offset,0,buffer,wr_len); // bak  setting
        return true;
    }
    if(strcmp((const char*)name,BD_ext_config)==0)
    {
        DF_WriteFlashSector(DF_BD_Extend_Page,0, buffer, wr_len);
        return true;
    }
    return false;
}
Exemplo n.º 9
0
  //  1 .  Ñ­»·´æ´¢ 
      u8     Api_cycle_write(u8 *buffer, u16 len) 
      {
             WatchDog_Feed(); 
             if( SaveCycleGPS(cycle_write,buffer,len))
	     { //---- updata pointer   -------------		
			cycle_write++;  	
		       if(cycle_write>=Max_CycleNum)
		  	               cycle_write=0;  
			DF_Write_RecordAdd(cycle_write,cycle_read,TYPE_CycleAdd);      
	      //-------------------------------	
	        return true; 
            }  
	    else
		 return  false;	  
  	}
Exemplo n.º 10
0
/*
      note:  使用前提是   addr+len 不允许超过  本扇区
*/
u8  SST25V_OneSector_Write(u8 *p,  u32  addr,  u32 len)
{ 
   u32   SectorStartAddr=addr&0xFFFFFFFFFFFFF000,i=0;  //  获取起始扇区的起始地址
   u32   insector_offset=addr&0xFFF; // 取扇区内偏移地址 



      //  1.  get   4096 to buf
       WatchDog_Feed();
       SST25V_BufferRead(OneSectorReg,SectorStartAddr,4096);
       WatchDog_Feed();
	   
	  // rt_kprintf("\r\n insector_offset=0x%X  \r\n",insector_offset);   
	   //OutPrint_HEX("\r\n 读取前",OneSectorReg,4096);  
       delay_ms(35);
       WatchDog_Feed();
	  
	  // 2. 把更新的内容给填进去
	   memcpy(OneSectorReg+insector_offset,p,len);  

	  // 3.  erase  Sector
	  	 SST25V_SectorErase_4KByte(SectorStartAddr);	
	     WatchDog_Feed();
	     DF_delay_ms(130); 	 
		// OutPrint_HEX("\r\n 擦完写前",OneSectorReg,4096);  
	  // 4.  write  buf  to  DF
	  // SST25V_strWrite(OneSectorReg,SectorStartAddr,4096);
	   SST25V_BufferWrite(OneSectorReg,SectorStartAddr,4096); 
	   DF_delay_ms(130);    
      

         //---------------- add   for  debug----------------       
	    WatchDog_Feed();
	    SST25V_BufferRead(reg_4096,SectorStartAddr,4096); 
		DF_delay_ms(50);    
      
	     //  rt_thread_delay(2);	  
		//   OutPrint_HEX("\r\n 读取后",OneSectorReg,4096);     
		   for(i=0;i<4096;i++)
		   {
		       if(OneSectorReg[i]!=reg_4096[i])
		       	{
		       	    rt_kprintf("\r\n Error at =0x%X \r\n",i);   
	                break;
		       	}
		   }	   
	 
       //----------- debug --------------------------------------------------  
					
		   WatchDog_Feed();
	      delay_ms(5);
	  //--------------------------------
	  return  true;
}
Exemplo n.º 11
0
void DF_EraseAppFile_Area(void)
{
    u16 i=0;
      /*
           1.先擦除0扇区   
           2.读出page48内容并将其写到第0扇区的page 0 
           3.读出page49内容并将其写到第0扇区的page 0
           4.擦除 6-38扇区 即 48page 到 304 page
           5.以后有数据过来就直接写入,不需要再擦除了 
        */
	
        SST25V_SectorErase_4KByte(0x0);
 	 DF_delay_ms(5);   
	 WatchDog_Feed();
       DF_ReadFlash(48,0,SST25Temp,PageSIZE);
	//DF_delay_ms(1);	 
        DF_WriteFlashDirect(0,0,SST25Temp,PageSIZE);
	 DF_delay_ms(1);	
	 WatchDog_Feed();
        DF_ReadFlash(49,0,SST25Temp,PageSIZE);
        DF_WriteFlashDirect(1,0,SST25Temp,PageSIZE);
	 DF_delay_ms(1);		
        for(i=6;i<134;i++)    // 要求是512K -> 128  erase sector 6-134      128K ->  32   
        {
            WatchDog_Feed();
            SST25V_SectorErase_4KByte(((u32)i*4096));
	     DF_delay_ms(5); 
	     WatchDog_Feed();		
        }
        DF_ReadFlash(0,0,SST25Temp,PageSIZE);
        DF_WriteFlashDirect(48,0,SST25Temp,PageSIZE); 
	 WatchDog_Feed();	
	 DF_delay_ms(1);		
        DF_ReadFlash(1,0,SST25Temp,PageSIZE);
	 WatchDog_Feed(); 	
        DF_WriteFlashDirect(49,0,SST25Temp,PageSIZE);
        rt_kprintf("\r\nSST25Ready\r\n"); 

}
Exemplo n.º 12
0
void  DwinLCD_Send(void)
{
     u8  i=0;
     u8  send[300];	 
	 
       memset(DwinLCD.Txinfo,0,sizeof(DwinLCD.Txinfo));
     	DwinLCD.TxInfolen=0;
       DwinLCD.Txinfo[0]=0xAA;
 	DwinLCD.Txinfo[1]=0x55;
 	
	switch (DwinLCD.Type)
	{   
	    case  LCD_SETTIME:    //  授时  
	                          /*  AA 55 0A 80 1F 5A 12 09 01 03 11 53 01     -----授时
                                        注: 12 09 01 03 11 53 01 表示  12年 09月01日 星期3 11:53:01
	                          */
	                        DwinLCD.Txinfo[2]=0x0A; 
			          DwinLCD.Txinfo[3]=0x80;
				   DwinLCD.Txinfo[4]=0x1F;  //  寄存器 
			          DwinLCD.Txinfo[5]=0x5A;	  
				   DwinLCD.Txinfo[6]=((((time_now.year))/10)<<4)+(((time_now.year))%10);  	   	
				   DwinLCD.Txinfo[7]=((time_now.month/10)<<4)+(time_now.month%10);  
				   DwinLCD.Txinfo[8]=((time_now.day/10)<<4)+(time_now.day%10); 
				   DwinLCD.Txinfo[9]=0x01; 
				   DwinLCD.Txinfo[10]=((time_now.hour/10)<<4)+(time_now.hour%10);
			          DwinLCD.Txinfo[11]=((time_now.min/10)<<4)+(time_now.min%10);
				   DwinLCD.Txinfo[12]=((time_now.sec/10)<<4)+(time_now.sec%10);       
				    rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,13);		
				    // rt_kprintf("\r\n  授时\r\n"); 	      
				  //    printf(":");
				 //  for(i=0;i<13;i++)   
				     //    printf(" %02X",DwinLCD.Txinfo[i]);     
				  // printf("\r\n"); 	 
				  break;	  
	    case  LCD_SETSPD:   //   速度方向
	                        // AA 55 07 82 00 01 01 30  00 F3 
	                        DwinLCD.Txinfo[2]=0x05; 
                               DwinLCD.Txinfo[3]=0x82;
				   DwinLCD.Txinfo[4]=0x10;
 	                        DwinLCD.Txinfo[5]=0x00;
 	                        DwinLCD.Txinfo[6]=((Speed_gps/10)>>8);     // 速度
 	                        DwinLCD.Txinfo[7]=(u8)(Speed_gps/10);  
				  // DwinLCD.Txinfo[8]=(GPS_direction>>8);	;   //  方向 
 	                       // DwinLCD.Txinfo[9]=GPS_direction; 			
				   rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,8);				
			   
			         break;
	    case  LCD_SDTXT:  
			        //  UART4_output_LongData("\xAA\x55\x05\x82\x10\x00\xFF\xFF",8  );   //  clear screen      
				    WatchDog_Feed();	
			          DwinLCD.Txinfo[2]=5+DwinLCD.TXT_contentLen;   // 长度 
                               DwinLCD.Txinfo[3]=0x82;
				   DwinLCD.Txinfo[4]=0x00;  // LCD ID  
 	                        DwinLCD.Txinfo[5]=0x05;
				   memcpy(DwinLCD.Txinfo+6,DwinLCD.TXT_content,DwinLCD.TXT_contentLen);  
				   DwinLCD.Txinfo[DwinLCD.TXT_contentLen+6]=0xFF;
				   DwinLCD.Txinfo[DwinLCD.TXT_contentLen+7]=0xFF;	
				   //UART4_output_LongData((const char*)DwinLCD.Txinfo,8+DwinLCD.TxInfolen);    
				   DwinLCD.TxInfolen=DwinLCD.TXT_contentLen; 
				   rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,8+DwinLCD.TxInfolen); 	
				   WatchDog_Feed();
				    delay_ms(30);
					
				   rt_kprintf("\r\n 5 inch LCD:");
				   for(i=0;i<6+DwinLCD.TxInfolen;i++) 
				         rt_kprintf(" %02X",DwinLCD.TXT_content[i]);   
				   rt_kprintf("\r\n");
				    
			         break;	   
	    case  LCD_GPSNUM:  //  GPS 信息   AA 55 05 82 10 01 00 03  最大为20
	                        DwinLCD.Txinfo[2]=5;   // 长度 
                               DwinLCD.Txinfo[3]=0x82;
				   DwinLCD.Txinfo[4]=0x10;  // LCD ID  
 	                        DwinLCD.Txinfo[5]=0x01; 
				   DwinLCD.Txinfo[6]=0x00;  //Data
				   DwinLCD.Txinfo[7]=Satelite_num; 

				    rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,8); 	

			         break;
	   case    LCD_GSMNUM://   GSM 信息  AA 55 05 82 10 02 00 09  最大为31
	                        DwinLCD.Txinfo[2]=5;   // 长度 
                               DwinLCD.Txinfo[3]=0x82;
				   DwinLCD.Txinfo[4]=0x10;  // LCD ID  
 	                        DwinLCD.Txinfo[5]=0x02;  
				   DwinLCD.Txinfo[6]=0x00;  //Data
				   DwinLCD.Txinfo[7]=ModuleSQ;   

				    rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,8); 	  
		                break;
	  case   LCD_VechInfo://  发送车辆信息要拼文本信息

                               DwinLCD.Txinfo[2]=5;   // 长度 
                               DwinLCD.Txinfo[3]=0x82;
				   DwinLCD.Txinfo[4]=0x37;  // LCD ID   
 	                        DwinLCD.Txinfo[5]=0x00;  
				                          //Data
				   memset(send,0,sizeof((const char*)send));                 
				    sprintf(send,"\r\nSocket: %d.%d.%d.%d : %d\r\n",RemoteIP_main[0],RemoteIP_main[1],RemoteIP_main[2],RemoteIP_main[3],RemotePort_main);
				   memcpy(DwinLCD.Txinfo+6,send,strlen((const char*)send));	
				   DwinLCD.TxInfolen=6+strlen((const char*)send);   

				    memset(send,0,sizeof((const char*)send));      
				   sprintf(send,"\r\nAPN:   %s\r\n",APN_String); 
                               memcpy(DwinLCD.Txinfo+ DwinLCD.TxInfolen,send,strlen((const char*)send));  	 
				   DwinLCD.TxInfolen+=strlen((const char*)send);      
				    memset(send,0,sizeof((const char*)send));   
				   sprintf(send,"\r\n车辆入网ID: "); 
				   memcpy(DwinLCD.Txinfo+ DwinLCD.TxInfolen,send,strlen((const char*)send));
				   DwinLCD.TxInfolen+=strlen((const char*)send);   
				   memcpy(DwinLCD.Txinfo+ DwinLCD.TxInfolen,SimID_12D,12);   //---- 
				   DwinLCD.TxInfolen+=12;     
				   memset(send,0,sizeof((const char*)send));   
				   sprintf(send,"\r\n\r\n车牌号:   %s",Vechicle_Info.Vech_Num,strlen((const char*)(Vechicle_Info.Vech_Num)));
				    memcpy(DwinLCD.Txinfo+ DwinLCD.TxInfolen,send,strlen((const char*)send));	
				   DwinLCD.TxInfolen+=strlen(send);    
				   // memset(send,0,sizeof((const char*)send));   
				    //sprintf(send,"\r\n车辆类型: %s",Vechicle_Info.Vech_Type,strlen((const char*)(const char*)(Vechicle_Info.Vech_Type)));
				   // memcpy(DwinLCD.Txinfo+ DwinLCD.TxInfolen,send,strlen((const char*)send));	  
				  // DwinLCD.TxInfolen+=strlen((const char*)send);    

				   DwinLCD.Txinfo[2]=DwinLCD.TxInfolen-3;  //   补填  
				    rt_device_write(&Device_485,0,( const char*)DwinLCD.Txinfo,DwinLCD.TxInfolen);   	

				       rt_kprintf("\r\n Dwin:");   
				   for(i=0;i<DwinLCD.TxInfolen;i++)  
				         rt_kprintf(" %02X",DwinLCD.Txinfo[i]);        
				   rt_kprintf("\r\n");	 

	                       break;
	   default :
	   	                return;

	}
       //-------------------------
   DwinLCD.Type=LCD_IDLE;          
   DwinLCD.TxInfolen=0;  // 信息长度	     
	//------------------------
}
Exemplo n.º 13
0
static void HMI_thread_entry(void* parameter)  
{
    u8 counter_printer=0;

     //  finsh_init(&shell->parser);
	rt_kprintf("\r\n ---> HMI thread start !\r\n");

      //------------ lcd  related --------------
       Init_lcdkey();
       lcd_init();
	rt_kprintf("\r\nJT808Conf_struct.password_flag=%d\r\n",JT808Conf_struct.password_flag);
    if(JT808Conf_struct.password_flag==0)
    	{
    	    JT808Conf_struct.Regsiter_Status=0;   //需要重新注册
            pMenuItem=&Menu_0_0_password;
	    pMenuItem->show();
    	}
	else
		{
	    pMenuItem=&Menu_1_Idle;
		pMenuItem->show();
		}
	while (1)
	{
	       KeyCheckFun();
              pMenuItem->timetick( 10 ); 
	 	pMenuItem->keypress( 10 );  
		if(print_rec_flag==1)
			{
			counter_printer++;
			if(counter_printer>=20)//加电后1s开始打印,打印间隔必须>300ms
				{
				counter_printer=0;
				if(TiredDrv_write>0)
					{
					ReadPiLao(1);
					Dis_pilao(data_tirexps);
					}
				if(ExpSpdRec_write>0)
					{
					ReadEXspeed(1);
					Dis_chaosu(data_tirexps);
					}
				if(0==Fetch_15minSpeed(15))
					{
					print_rec_flag=2;
					DaYin=1;//开始打印
					}
				else
				      {
				        DaYin=0;
					 print_rec_flag=0;
					}
				WatchDog_Feed();
				rt_kprintf("\r\n----------开始打印");
				}
			}
		else if(print_rec_flag==2)
			{
			counter_printer++;
			if(counter_printer>=7)//打印间隔必须>300ms      7
				{
				counter_printer=0;
				if(ModuleStatus&Status_GPS)
					Dayin_Fun(1);
				else	 
					Dayin_Fun(0);
				}
			}
               //--------------------------------------------
               if(ASK_Centre.ASK_disp_Enable==1)
		   {
			ASK_Centre.ASK_disp_Enable=0; 
			pMenuItem=&Menu_3_1_CenterQuesSend;
		       pMenuItem->show();
		 }
		else if(TextInfo.TEXT_SD_FLAG==1)
		{
			TextInfo.TEXT_SD_FLAG=0;
			pMenuItem=&Menu_7_CentreTextDisplay;
		       pMenuItem->show();
		}
	 	//--------------------------------------------	   
              rt_thread_delay(5);       
     }  
}
Exemplo n.º 14
0
//-------  ¹Ì¶¨Î»Öà ÐòºÅ¼Ç¼  -----------
  u8   Api_RecordNum_Write( u8 *name,u8 Rec_Num,u8 *buffer, u16 len)    //  Rec_Num<128  Len<128
{
          WatchDog_Feed();
           if(strcmp((const char*)name,event_808)==0)
           	{
                   DF_WriteFlash(DF_Event_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}
           if(strcmp((const char*)name,msg_broadcast)==0)
		{
                   DF_WriteFlash(DF_Broadcast_offset+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}   	
	    if(strcmp((const char*)name,phonebook)==0)
		{
                   DF_WriteFlash(DF_PhoneBook_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}	
	    if(strcmp((const char*)name,Rail_cycle)==0)
		{
                   DF_WriteFlash(DF_Event_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}	
           if(strcmp((const char*)name,Rail_rect)==0)
	        {
                   DF_WriteFlash(DF_RectangleRail_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}		   	
	    if(strcmp((const char*)name,Rail_polygen)==0)	
	     {
                   DF_WriteFlash(DF_PolygenRail_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}			
	    if(strcmp((const char*)name,turn_point)==0)
		{
                   DF_WriteFlash(DF_turnPoint_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}		
           if(strcmp((const char*)name,route_line)==0)
		{
                   DF_WriteFlash(DF_Route_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}	   	
	    if(strcmp((const char*)name,ask_quesstion)==0)	
		{
                   DF_WriteFlash(DF_AskQuestion_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}		
	    if(strcmp((const char*)name,text_msg)==0)
	      {
                   DF_WriteFlash(DF_Msg_Page+Rec_Num, 0,buffer, len);   
		     return true;		   
           	}
  //-------------------------------
                if(strcmp((const char*)name,pic_index)==0)
                {
                            DF_WriteFlash(DF_PicIndex_Page+Rec_Num, 0,buffer, len); 
				return true;			
                }
		 if(strcmp((const char*)name,voice_index)==0)
		{
                            DF_WriteFlash(DF_SoundIndex_Page+Rec_Num, 0,buffer, len);
				return  true;			
              }
		 
		 return false;
}
Exemplo n.º 15
0
void  Pic_Data_Process(void) 
{
      u8  tmp[40]; 
      u8   pic_buf[600];
	    u16 i=0;
  

           // 1.    Judge   last  package  
            PackageLen=_485_content_wr;
             if(PackageLen<PageSIZE)
			  last_package=1;    	
	    else   
	      if((last_package==0)&&(_485_content[510]==0xFF)&&(_485_content[511]==0xD9))
		  {
		            last_package=1;        
		  }          
	   //  2.    Block ++	    
	      CameraState.block_counter++;
	  //   3.    Check   first   packet
            if(CameraState.create_Flag==1)    // 如果是第一包则创建文件 hhmmss_x.jpg
              {                  
                     CameraState.create_Flag=0; // clear 
					 memset(tmp,0,sizeof(tmp));
					 memset(PictureName,0,sizeof(PictureName));
					 //-----------  创建图片文件处理  -------------					 
					 /*
						 每张图片占32个page    其中第1个page 为图片索引,后边127个Page为图片内容	
						 SST25 开辟个区域做图片缓存 
					 */
                       DF_Read_RecordAdd(pic_write,pic_read,TYPE_PhotoAdd);					 
					 //pic_current_page=(pic_write<<5)+PicStart_offset; //计算图片起始page 
					if(Camera_Number==1) 
					{
					     pic_current_page=PicStart_offset; //起始page 固定为缓存起始地址
					     //擦除一个64K的区域用于图片存储  
					  
					     Api_DFdirectory_Delete(camera_1);
					  
					}
					else
					if(Camera_Number==2) 
					{
						 pic_current_page=PicStart_offset2; //起始page 固定为缓存起始地址
						 //擦除一个64K的区域用于图片存储  					   
					     Api_DFdirectory_Delete(camera_2);
					   ; 	 
					}	
					else
					if(Camera_Number==3) 
					{
						 pic_current_page=PicStart_offset3; //起始page 固定为缓存起始地址
						 //擦除一个64K的区域用于图片存储  
					     Api_DFdirectory_Delete(camera_3);   	 
					}
					else
					if(Camera_Number==4) 
					{
					     pic_current_page=PicStart_offset4; //起始page 固定为缓存起始地址
						 //擦除一个64K的区域用于图片存储  
					     Api_DFdirectory_Delete(camera_4); 	   
					}	
					 DF_delay_ms(150);  
					 WatchDog_Feed(); 
					 pic_current_page++;  // 图片内容从 第二个page 开始 第一个Page 存储的是图片索引 
					 pic_PageIn_offset=0; // 页内偏移清空 
					 pic_size=0; // 清除图片大小
					 //------------------------------------------					 
					 memset(PictureName,0,sizeof(PictureName));    
					 sprintf((char*)PictureName,"%d%d%d-%d.jpg",time_now.hour,time_now.min,time_now.sec,Camera_Number);  	
					 rt_kprintf("\r\n              创建图片名称: %s \r\n                  图片地址: %d ",PictureName,pic_write);   
					 WatchDog_Feed();  
        
		              //----- TF -------		         
				/*if(Udisk_Test_workState==1)	 	
		              {  
                               // creat_file(PictureName); //TF卡创建文件 
                                 rt_kprintf("\r\n   udisk  创建文件成功!");
                                 udisk_fd=open((const char*)PictureName, O_RDWR|O_CREAT, 0);  // 创建U 盘文件
                                 rt_kprintf(" \r\n udiskfile: %s  open res=%d   \r\n",PictureName, udisk_fd);  
		              }  */		              
				 WatchDog_Feed();         
                      // -----    写图片索引 -------
                      Save_MediaIndex(0,PictureName,Camera_Number,0);  					  
               	}  
			
	       //  4.   填写存储图片内容数据  --------------------		
	       WatchDog_Feed();  
		   DF_WriteFlashDirect(pic_current_page,0,_485_content, PackageLen);// 写一次一个Page 512Bytes
		   delay_ms(90);  
		   //rt_kprintf(" \r\n ---- write  pic_current_page=%d  \r\n",pic_current_page);   		   
		   rt_kprintf(" \r\n ---- packet=%d  \r\n",CameraState.block_counter);     
		  
                         //---  read compare 
		    memset(pic_buf,0,600);
		    DF_ReadFlash(pic_current_page,0,pic_buf, PackageLen);
			delay_ms(30);
		    for(i=0;i<PackageLen;i++)
		   {		if(pic_buf[i]!=_485_content[i])
		    	       {
		    	          rt_kprintf(" \r\n ----read not equal write  where i=%d  Rd[i]=%2X  WR[i]=%2X \r\n",i,pic_buf[i],_485_content[i]); 
						  DF_WriteFlashDirect(pic_current_page,0,_485_content, PackageLen);// 再写一次一个Page 512Bytes
		                  delay_ms(85);   
					      break;		  
		    	       }
		   }	 
                      //----- TF -------
		       /*       if((Udisk_Test_workState==1)&&(udisk_fd))
		              {
		                  fd_res=write(udisk_fd,_485_content, PackageLen);
	                         rt_kprintf("\r\n  wr--1 :%s  resualt=%d\r\n",PictureName,fd_res);	
				    if(fd_res<=0)
				        close(udisk_fd);
		              } 
		        */  
				   pic_size+=PackageLen;// 图片大小累加	 				   
				   pic_current_page++; //写一页加一
				  // pic_PageIn_offset+=PackageLen;  
				   DF_delay_ms(50);   
	   //   5.   最后一包 ,即拍照结束
		  if(last_package==1)
		 {
			   //f_close(&FileCameraIn);  //  拍照完成关闭图片文件
			   memset(_485_content,0,sizeof(_485_content)); 
			   _485_content_wr=0;			  

			   //-------------  图片拍照结束 相关处理  ------------------------------------
			   //  1. 写图片索引
			   if(Camera_Number==1)
				   pic_current_page=PicStart_offset; //计算图片起始page 
			   else
			   if(Camera_Number==2)
			         pic_current_page=PicStart_offset2; //计算图片起始page 
			   else
			   if(Camera_Number==3)
			         pic_current_page=PicStart_offset3; //计算图片起始page 
			   else
			   if(Camera_Number==4)
			         pic_current_page=PicStart_offset4; //计算图片起始page        
			   PictureName[18]=Camera_Number;
			   memcpy(PictureName+19,(u8*)&pic_size,4);	 			   
			   DF_WriteFlashDirect(pic_current_page,0,PictureName, 23);  
			   DF_delay_ms(8); 
			   
	               //  5.1   更新图片读写记录
	               pic_write++;
				   if(pic_write>=Max_PicNum)
				   	  pic_write=0;    
	               DF_Write_RecordAdd(pic_write,pic_read,TYPE_PhotoAdd);  
	               //--------------------------------------------------------------------------                  
	               rt_kprintf("\r\n        PicSize: %d Bytes\r\n    Camera  %d   End\r\n",pic_size,Camera_Number); 
		        SingleCamra_TakeResualt_BD=0;	    //  单路摄像头拍照		
		        SD_ACKflag.f_BD_CentreTakeAck_0805H=1;  //  发送中心拍照命令应答
		        //----------  Normal process ---------------------
			 End_Camera(); 

				
		        // 5.2   拍照完成后检查有没有多路 拍-----------Multi Take process--------------------
				   if(1==MultiTake.Taking)
				   {
					   switch(Camera_Number)
						 {
							case  1: 
	                                   //-------- old process---------------
	                                   MultiTake.TakeResult[0]=Take_Success;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
	                                   MultiTake.Take_retry=0;
	                                   //-------------------------------------------
									   if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
									   	    break;
									   //----------拍照下一路摄像头-----------									   
										   Camera_Number=2;  
									   //-------------------------
									    Start_Camera(Camera_Number);
									 
								    break;
							case  2: 
	                                   //-------- old process---------------
	                                   MultiTake.TakeResult[1]=Take_Success;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
	                                   MultiTake.Take_retry=0;
	                                   //-------------------------------------------
									   if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
									   	    break;
									   //----------拍照下一路摄像头-----------									   
										   Camera_Number=3;  
									   //-------------------------
									    Start_Camera(Camera_Number);
									 
								    break;
						   case  3: 
	                                   //-------- old process---------------
	                                   MultiTake.TakeResult[2]=Take_Success;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
	                                   MultiTake.Take_retry=0;
	                                   //-------------------------------------------
									   if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
									   	    break;
									   //----------拍照下一路摄像头-----------									   
										   Camera_Number=4;   
									   //-------------------------
									    Start_Camera(Camera_Number);
									 
								    break;				
							case  4: 
	                                   //-------- old process---------------
	                                   MultiTake.TakeResult[3]=Take_Success;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
	                                   MultiTake.Take_retry=0;
									   
	                                   //-------------------------------------------
									   if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
									   	    break;
									
								    break;					
						    default:
								    MultiTake_End();
	                                                     break;
								  
					   	 }		

					}		
				   else
				   if((0==MultiTake.Taking)&&(0==MultiTake.Transfering)) 
				    {    
				       //------ 判断车门开关拍照是否上传状态 ------
					    if((OpenDoor_StartTakeFlag==1)&&(Opendoor_transFLAG==0)) 
			                    {
			                         MultiTake_End();   // 车门开关不上传
			                         OpenDoor_StartTakeFlag=0;
							    }     
			                   else
			                   	{
									rt_kprintf("\r\n Single Camera !\r\n"); 
									if(Camera_Take_not_trans==0)  
											Photo_send_start(Camera_Number);  //在不是多路拍照的情况下拍完就可以上传了
									 else
									   Camera_Take_not_trans=0;					   
			                   	}
				   	}	
				    //  拍照结束  
	    }
	 else
	  {
	     
		 //------- change state  -------
		 CameraState.status=transfer;
		 CameraState.OperateFlag=0;   // clear 
	  
		  TX_485const_Enable=1;  // 发送485 命令
		   _485_RXstatus._485_receiveflag=IDLE_485;   
                 //rt_kprintf("\r\n  Head info_len : %d\r\n",_485_content_wr); 
		  memset(_485_content,0,sizeof(_485_content));
		  _485_content_wr=0;			  
		  //rt_kprintf("\r\n  One Packet Over!\r\n"); 	 
		 
	  } 			  
}
Exemplo n.º 16
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			if(comfirmation_flag==4)
				{
				pMenuItem=&Menu_1_Idle;
				pMenuItem->show();
				}
			else
				{
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}
			col_screen=0;
			CarBrandCol_Cou=1;
			comfirmation_flag=0;
			break;
		case KeyValueOk:
             if(col_screen==1)
				{
				if(MENU_set_carinfor_flag==1)
					{
					comfirmation_flag=0;
					lcd_fill(0);
					lcd_text12(12,3,"车牌颜色设置完成",16,LCD_MODE_SET);
					lcd_text12(24,18,"按菜单键返回",12,LCD_MODE_SET);
					lcd_update_all();
					rt_kprintf("\r\n车牌颜色设置完成,按菜单键返回,%d",Vechicle_Info.Dev_Color);
					// 车牌颜色
					if(License_Not_SetEnable==1) 
						Vechicle_Info.Dev_Color=0;
					else
						Vechicle_Info.Dev_Color=Menu_color_num; 
					DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));         
					}
				else
					{
					col_screen=2;
					CarSet_0_counter=0;//
					menu_color_flag=1;//车牌颜色设置完成
					lcd_fill(0);
					lcd_text12(20,3,(char *)car_col,13,LCD_MODE_SET);
					lcd_text12(12,18,"按确认键查看信息",16,LCD_MODE_SET);
					lcd_update_all();
					}
				}
			else if(col_screen==2)
				{
				menu_color_flag=0;
				
				col_screen=3;
				comfirmation_flag=1;//保存设置信息标志
				lcd_fill(0);
				if(License_Not_SetEnable==1)
					lcd_text12(0,0,"无牌照",6,LCD_MODE_SET);
				else
				lcd_text12(0,0,(char *)Menu_Car_license,8,LCD_MODE_SET);
				lcd_text12(54,0,(char *)Menu_VechileType,6,LCD_MODE_SET);
				      //====  车牌号未设置=====
                if(License_Not_SetEnable==1)
					 lcd_text12(96,0,(char *)"0",1,LCD_MODE_SET); 
			    else
				     lcd_text12(96,0,(char *)Menu_VecLogoColor,4,LCD_MODE_SET);
				
				lcd_text12(0,12,"SIM卡号",7,LCD_MODE_SET);
				lcd_text12(43,12,(char *)Menu_sim_Code,11,LCD_MODE_SET);
				lcd_text12(24,23,"确定",4,LCD_MODE_INVERT);
				lcd_text12(72,23,"取消",4,LCD_MODE_SET);
				lcd_update_all();
				}
			else if(comfirmation_flag==1)
				{
				col_screen=0;
				comfirmation_flag=4;
				//保存设置的信息
				lcd_fill(0);
				lcd_text12(18,3,"保存已设置信息",14,LCD_MODE_SET);
				lcd_text12(0,18,"按菜单键进入待机界面",20,LCD_MODE_SET);
				lcd_update_all();
				
                // 保存速度类型
                // gps速度JT808Conf_struct.Speed_GetType= 0:   传感器速度 JT808Conf_struct.Speed_GetType=1
                spd_type(JT808Conf_struct.Speed_GetType);  

                            //车牌号
                //rt_kprintf("\r\n(保存信息)Menu_Car_license=%s",Menu_Car_license);
				memset(Vechicle_Info.Vech_Num,0,sizeof(Vechicle_Info.Vech_Num));
				memcpy(Vechicle_Info.Vech_Num,Menu_Car_license,strlen((const char*)Menu_Car_license)); 
                //rt_kprintf("\r\n(保存信息)Vechicle_Info.Vech_Num=%s",Vechicle_Info.Vech_Num);
				// 车辆类型
				memset(Vechicle_Info.Vech_Type,0,sizeof(Vechicle_Info.Vech_Type));
				memcpy(Vechicle_Info.Vech_Type,Menu_VechileType,10);
                //rt_kprintf("\r\n(保存1   )Vechicle_Info.Vech_Num=%s",Vechicle_Info.Vech_Num);
                                
///////
				 //车辆VIN
				memset(Vechicle_Info.Vech_VIN,0,sizeof(Vechicle_Info.Vech_VIN));
				memcpy(Vechicle_Info.Vech_VIN,Menu_Vin_Code,17);
				//rt_kprintf("\r\n(保存2   )Vechicle_Info.Vech_Num=%s",Vechicle_Info.Vech_Num);
                 
				// SIM卡号码
				//memset(JT808Conf_struct.Vech_sim,0,sizeof(JT808Conf_struct.Vech_sim));
				//memcpy(JT808Conf_struct.Vech_sim,Menu_sim_Code,11);
				//-----------------------------------------------------------------------------
							  memset(SimID_12D,0,sizeof(SimID_12D));
							  SimID_12D[0]='0';
							  memcpy(SimID_12D+1,Menu_sim_Code,11);									 
							  DF_WriteFlashSector(DF_SIMID_12D,0,SimID_12D,13); 
							  delay_ms(80); 		  
							  //rt_kprintf("\r\n 显示屏设备SIM_ID设置为 : %s", SimID_12D);   
							  DF_ReadFlash(DF_SIMID_12D,0,SimID_12D,13); 
							  SIMID_Convert_SIMCODE();  // 转换  
		              //----------------------------------------------------------------------------
                //rt_kprintf("\r\n(保存3   )Vechicle_Info.Vech_Num=%s",Vechicle_Info.Vech_Num);
                               
				// 车牌颜色
				if(License_Not_SetEnable==1) 
                     Vechicle_Info.Dev_Color=0;
				else
				     Vechicle_Info.Dev_Color=Menu_color_num;
				//车辆设置完成
				Login_Menu_Flag=1;     //  输入界面为0 
		        DF_WriteFlashSector(DF_LOGIIN_Flag_offset,0,&Login_Menu_Flag,1); 
				//  存储
				//rt_kprintf("\r\n(保存4   )Vechicle_Info.Vech_Num=%s",Vechicle_Info.Vech_Num);
				DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));         
				WatchDog_Feed();
				DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
				WatchDog_Feed();
				DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
				delay_ms(3);
				DF_ReadFlash(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));  
				
				}
			else if(comfirmation_flag==2)
				{
				col_screen=0;
				comfirmation_flag=3;
				lcd_fill(0);
				lcd_text12(6, 3,"请确认是否重新设置",18,LCD_MODE_SET);
				lcd_text12(12,18,"按确认键重新设置",16,LCD_MODE_SET);
				lcd_update_all();
				}
			else if(comfirmation_flag==3)
				{
				col_screen=0;
				comfirmation_flag=0;
				//重新设置
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				
				comfirmation_flag=0;
				col_screen=0;
				CarBrandCol_Cou=1;
				}

			break;
		case KeyValueUP:
			if(col_screen==1)
				{
				CarBrandCol_Cou--;
				if(CarBrandCol_Cou<1)
					CarBrandCol_Cou=5;
				car_col_fun(CarBrandCol_Cou);
				}
			else if(col_screen==3)
				{
				comfirmation_flag=1;

				lcd_fill(0);
				if(License_Not_SetEnable==1)
					lcd_text12(0,0,"无牌照",6,LCD_MODE_SET);
				else
					lcd_text12(0,0,(char *)Menu_Car_license,8,LCD_MODE_SET);
				lcd_text12(54,0,(char *)Menu_VechileType,6,LCD_MODE_SET);
				      //====  车牌号未设置=====
                if(License_Not_SetEnable==1)
					 lcd_text12(96,0,(char *)"0",1,LCD_MODE_SET); 
			    else
				     lcd_text12(96,0,(char *)Menu_VecLogoColor,4,LCD_MODE_SET);
				
				lcd_text12(0,12,"SIM卡号",7,LCD_MODE_SET);
				lcd_text12(43,12,(char *)Menu_sim_Code,11,LCD_MODE_SET);
				lcd_text12(24,23,"确定",4,LCD_MODE_INVERT);
				lcd_text12(72,23,"取消",4,LCD_MODE_SET);
				lcd_update_all();
				}

			break;
		case KeyValueDown:
			if(col_screen==1)
				{
				CarBrandCol_Cou++;
				if(CarBrandCol_Cou>5)
					CarBrandCol_Cou=1;
				car_col_fun(CarBrandCol_Cou);
				}
			else if(col_screen==3)
				{
				comfirmation_flag=2;
				lcd_fill(0);
				if(License_Not_SetEnable==1)
					lcd_text12(0,0,"无牌照",6,LCD_MODE_SET);
				else
					lcd_text12(0,0,(char *)Menu_Car_license,8,LCD_MODE_SET);
				lcd_text12(54,0,(char *)Menu_VechileType,6,LCD_MODE_SET);
				      //====  车牌号未设置=====
                if(License_Not_SetEnable==1)
					 lcd_text12(96,0,(char *)"0",1,LCD_MODE_SET); 
			    else
				     lcd_text12(96,0,(char *)Menu_VecLogoColor,4,LCD_MODE_SET);
				
				lcd_text12(0,12,"SIM卡号",7,LCD_MODE_SET);
				lcd_text12(43,12,(char *)Menu_sim_Code,11,LCD_MODE_SET);
				lcd_text12(24,23,"确定",4,LCD_MODE_SET);
				lcd_text12(72,23,"取消",4,LCD_MODE_INVERT);
				lcd_update_all();
				}

			break;
		}
	KeyValue=0;
}
Exemplo n.º 17
0
void  Pic_Data_Process(void)
{
    u8  tmp[40];
    u8   pic_buf[600];
    u16 i = 0;

    DF_TAKE;
    // 1.    Judge   last  package
    PackageLen = _485_content_wr;
    if(PackageLen < PageSIZE)
        CameraState.last_package = 1;
    else if((CameraState.last_package == 0) && (_485_content[510] == 0xFF) && (_485_content[511] == 0xD9))
    {
        CameraState.last_package = 1;
    }
    //  2.    Block ++
    CameraState.block_counter++;
    //   3.    Check   first   packet
    if(CameraState.create_Flag == 1)  // 如果是第一包则创建文件 hhmmss_x.jpg
    {
        CameraState.create_Flag = 0; // clear
        memset(tmp, 0, sizeof(tmp));
        memset(PictureName, 0, sizeof(PictureName));
        //-----------  创建图片文件处理  -------------
        /*
         每张图片占32个page    其中第1个page 为图片索引,后边127个Page为图片内容
         SST25 开辟个区域做图片缓存
        */
        if(CameraState.Camera_Number == 1)
        {
            pic_current_page = PicStart_offset; //起始page 固定为缓存起始地址
            //擦除一个64K的区域用于图片存储

            Api_DFdirectory_Delete(camera_1);

        }
        else if(CameraState.Camera_Number == 2)
        {
            pic_current_page = PicStart_offset2; //起始page 固定为缓存起始地址
            //擦除一个64K的区域用于图片存储
            Api_DFdirectory_Delete(camera_2);
            ;
        }
        else if(CameraState.Camera_Number == 3)
        {
            pic_current_page = PicStart_offset3; //起始page 固定为缓存起始地址
            //擦除一个64K的区域用于图片存储
            Api_DFdirectory_Delete(camera_3);
        }
        else if(CameraState.Camera_Number == 4)
        {
            pic_current_page = PicStart_offset4; //起始page 固定为缓存起始地址
            //擦除一个64K的区域用于图片存储
            Api_DFdirectory_Delete(camera_4);
        }
        DF_delay_ms(150);
        WatchDog_Feed();
        pic_current_page++;  // 图片内容从 第二个page 开始 第一个Page 存储的是图片索引
        pic_PageIn_offset = 0; // 页内偏移清空
        pic_size = 0; // 清除图片大小
        //------------------------------------------
        memset(PictureName, 0, sizeof(PictureName));
		// sprintf((char*)PictureName,"0:%02d%02d%02d%02d%02d%02d-%d.jpg",time_now.year,time_now.month,time_now.day,time_now.hour,time_now.min,time_now.sec,CameraState.Camera_Number); 	
		sprintf((char*)PictureName,"%02d%02d%02d%02d%02d%02d-%d.jpg",time_now.year,time_now.month,time_now.day,time_now.hour,time_now.min,time_now.sec,CameraState.Camera_Number);	 
        if(GB19056.workstate == 0)
            rt_kprintf("\r\n              创建图片名称: %s \r\n           ", PictureName);
        WatchDog_Feed();


        WatchDog_Feed();
        // -----    写图片索引 -------
        Save_MediaIndex(0, PictureName, CameraState.Camera_Number, 0);
    }

    //  4.   填写存储图片内容数据  --------------------
    WatchDog_Feed();
    DF_WriteFlashDirect(pic_current_page, 0, _485_content, PackageLen); // 写一次一个Page 512Bytes
    delay_ms(150);

#ifdef TFCARD
    if(sd_ok)
        sd_writefile(PictureName, _485_content, PackageLen);
#endif
    //  rt_kprintf(" \r\n ---- pkg=%d  \r\n",CameraState.block_counter);

    //---  read compare
    memset(pic_buf, 0, 600);
    DF_ReadFlash(pic_current_page, 0, pic_buf, PackageLen);
    delay_ms(10);
    for(i = 0; i < PackageLen; i++)
    {
        if(pic_buf[i] != _485_content[i])
        {
            if(GB19056.workstate == 0)
                rt_kprintf(" \r\n write--read Error");
            // rt_kprintf(" \r\n ----read not equal write  where i=%d  Rd[i]=%2X  WR[i]=%2X \r\n",i,pic_buf[i],_485_content[i]);
            DF_WriteFlashDirect(pic_current_page, 0, _485_content, PackageLen); // 再写一次一个Page 512Bytes
            delay_ms(100);
            break;
        }
    }
    pic_size += PackageLen; // 图片大小累加
    pic_current_page++; //写一页加一
    // pic_PageIn_offset+=PackageLen;
    //  DF_delay_ms(50);
    //   5.   最后一包 ,即拍照结束
    if(CameraState.last_package == 1)
    {
        memset(_485_content, 0, sizeof(_485_content));
        _485_content_wr = 0;

        //-------------  图片拍照结束 相关处理  ------------------------------------
        //  1. 写图片索引
        if(CameraState.Camera_Number == 1)
            pic_current_page = PicStart_offset; //计算图片起始page
        else if(CameraState.Camera_Number == 2)
            pic_current_page = PicStart_offset2; //计算图片起始page
        else if(CameraState.Camera_Number == 3)
            pic_current_page = PicStart_offset3; //计算图片起始page
        else if(CameraState.Camera_Number == 4)
            pic_current_page = PicStart_offset4; //计算图片起始page
        PictureName[18] = CameraState.Camera_Number;
        memcpy(PictureName + 19, (u8 *)&pic_size, 4);
        DF_WriteFlashDirect(pic_current_page, 0, PictureName, 23);
        DF_delay_ms(8);

        //  5.1   更新图片读写记录
        //--------------------------------------------------------------------------
        if(GB19056.workstate == 0)
            rt_kprintf("\r\n        PicSize: %d Bytes\r\n    Camera  %d   End\r\n", pic_size, CameraState.Camera_Number);
        CameraState.SingleCamra_TakeResualt_BD = 0;	  //  单路摄像头拍照
        SD_ACKflag.f_BD_CentreTakeAck_0805H = 1; //  发送中心拍照命令应答
        //----------  Normal process ---------------------
        Camera_End(MultiTake.Taking);


        // 5.2   拍照完成后检查有没有多路 拍-----------Multi Take process--------------------
        if(1 == MultiTake.Taking)
        {
            switch(CameraState.Camera_Number)
            {
            case  1:
                //-------- old process---------------
                MultiTake.TakeResult[0] = Take_Success; // 表示第一路摄像头拍照失败
                //--------- new   process-------------
                MultiTake.Take_retry = 0;
                //-------------------------------------------
                if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
                    break;
                //----------拍照下一路摄像头-----------
                CameraState.Camera_Number = 2;
                //-------------------------
                Camera_Start(CameraState.Camera_Number);

                break;
            case  2:
                //-------- old process---------------
                MultiTake.TakeResult[1] = Take_Success; // 表示第一路摄像头拍照失败
                //--------- new   process-------------
                MultiTake.Take_retry = 0;
                //-------------------------------------------
                if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
                    break;
                //----------拍照下一路摄像头-----------
                CameraState.Camera_Number = 3;
                //-------------------------
                Camera_Start(CameraState.Camera_Number);

                break;
            case  3:
                //-------- old process---------------
                MultiTake.TakeResult[2] = Take_Success; // 表示第一路摄像头拍照失败
                //--------- new   process-------------
                MultiTake.Take_retry = 0;
                //-------------------------------------------
                if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
                    break;
                //----------拍照下一路摄像头-----------
                CameraState.Camera_Number = 4;
                //-------------------------
                Camera_Start(CameraState.Camera_Number);

                break;
            case  4:
                //-------- old process---------------
                MultiTake.TakeResult[3] = Take_Success; // 表示第一路摄像头拍照失败
                //--------- new   process-------------
                MultiTake.Take_retry = 0;

                //-------------------------------------------
                if(CHKendTake_ReadyToSend())// 检查是否是最后的拍照线路
                    break;

                break;
            default:
                MultiTake_End();
                break;

            }

        }
        else if((0 == MultiTake.Taking) && (0 == MultiTake.Transfering))
        {
            //------ 判断车门开关拍照是否上传状态 ------
            if((OpenDoor_StartTakeFlag == 1) && (Opendoor_transFLAG == 0))
            {
                MultiTake_End();   // 车门开关不上传
                OpenDoor_StartTakeFlag = 0;
            }
            else
            {
                //rt_kprintf("\r\n Single Camera !\r\n");
                if(CameraState.Camera_Take_not_trans == 0)
                    Photo_send_start(CameraState.Camera_Number);  //在不是多路拍照的情况下拍完就可以上传了
                else
                    CameraState.Camera_Take_not_trans = 0;
            }
        }
        //  拍照结束
    }
    else
    {

        //------- change state  -------
        CameraState.status = transfer;
        CameraState.OperateFlag = 0; // clear

        CameraState.TX_485const_Enable = 1; // 发送485 命令
        _485_RXstatus._485_receiveflag = IDLE_485;
        memset(_485_content, 0, sizeof(_485_content));
        _485_content_wr = 0;
        //rt_kprintf("\r\n  One Packet Over!\r\n");

    }
    DF_RELEASE;
}
Exemplo n.º 18
0
static void HMI_thread_entry(void* parameter)  
{
    u8 counter_printer=0;

     //  finsh_init(&shell->parser);
	rt_kprintf("\r\n ---> HMI thread start !\r\n");

       //------------ lcd  related --------------
       // Init_lcdkey();
	   // delay_ms(400); // 屏rst 拉低    维持一段时间 
        //lcd_init();
	   //-------- IC card related ---------------
	    Init_4442(); 


	rt_kprintf("\r\nVechicle_Info.loginpassword_flag=%d\r\n",Login_Menu_Flag);
    if(Login_Menu_Flag==0)
    	{
    	    JT808Conf_struct.Regsiter_Status=0;   //需要重新注册
            pMenuItem=&Menu_0_0_password;
	        pMenuItem->show();
    	}
	else
		{
	        pMenuItem=&Menu_1_Idle;   
		    pMenuItem->show();  
		}

	while (1)
	{
	       KeyCheckFun();
           pMenuItem->timetick( 10 ); 
	 	   pMenuItem->keypress( 10 );    
		if(print_rec_flag==1)
			{
			counter_printer++;
			if(counter_printer>=10)//加电后1s开始打印,打印间隔必须>300ms
				{
				counter_printer=0;
				if(TiredDrv_write>0)
					{
					ReadPiLao(1);
					Dis_pilao(data_tirexps);
					}
				if(ExpSpdRec_write>0)
					{
					ReadEXspeed(1);
					Dis_chaosu(data_tirexps);
					}
				
			    Fetch_15minSpeed(15);
				print_rec_flag=2;
				DaYin=1;//开始打印
				/*if(0==Fetch_15minSpeed(15))
					{
					print_rec_flag=2;
					DaYin=1;//开始打印
					}
				else
				    {
				        DaYin=0;
					    print_rec_flag=0;
					 
					 	//----------------------------------------------------- 
						gps_onoff(1);  //开启GPS 模块的点
						print_workingFlag=0;  // 打印状态进行中
						Power_485CH1_ON;     // 开启485
						//Speak_ON;      //  开启音频功放     
						//-----------------------------------------------------
					}*/
				WatchDog_Feed();
				rt_kprintf("\r\n----------开始打印");
				}
			}
		else if(print_rec_flag==2)
			{
			counter_printer++;
			if(counter_printer>=4)//打印间隔必须>300ms      7 
				{
				counter_printer=0;
				//if(ModuleStatus&Status_GPS)
					Dayin_Fun(1);
				/*else	 
					Dayin_Fun(0);*/
				}
			} 
		 //---------- IC card  insert --------------------------
		// if(GSM_PWR.GSM_power_over==1) 
		 CheckICInsert();  
		 //------- Buzzer -----------------------------------
		 KeyBuzzer(IC_CardInsert);
		//--------------------------------------------
		if(ASK_Centre.ASK_disp_Enable==1)
		   {
			ASK_Centre.ASK_disp_Enable=0; 
			pMenuItem=&Menu_3_1_CenterQuesSend;
		       pMenuItem->show();
		 }
		else if(TextInfo.TEXT_SD_FLAG==1)
		{
			TextInfo.TEXT_SD_FLAG=0;
			pMenuItem=&Menu_7_CentreTextDisplay;
		       pMenuItem->show();
		}
	 	//--------------------------------------------	   
        rt_thread_delay(10);            
     }  
}
Exemplo n.º 19
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			break;
		case KeyValueOk:
			if(type_selc_screen==1)
				{
				type_selc_screen=2;
				if(type_selc_flag==1)
					{
						lcd_fill(0);
						lcd_text12(9,3,"车辆类型:两客一危",17,LCD_MODE_SET);
						lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET);
						lcd_update_all();
						Vechicle_Info.Vech_Type_Mark=1;
					}
				else
					{   
						lcd_fill(0);
						lcd_text12(15,3,"车辆类型:货运车",15,LCD_MODE_SET);
						lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET);
						lcd_update_all();
						Vechicle_Info.Vech_Type_Mark=2;
					}
				}
			else if(type_selc_screen==2)
				{
				if(MENU_set_carinfor_flag==1)
					{
					 //--------------------------------------------------------------------------------
                     //  select mode
					 if(Vechicle_Info.Vech_Type_Mark==1)   //两客一危
					 	{
					 	    Vechicle_Info.Link_Frist_Mode=1;
	                        Socket_main_Set("60.28.50.210:9131"); 
							 //--------    清除鉴权码 -------------------
					        idip("clear");		
							

					 	}
					 else
					 if(Vechicle_Info.Vech_Type_Mark==2)  //  公共货运平台
					 	{
	                         Vechicle_Info.Link_Frist_Mode=0; 
							 port_main("7008");
							  //--------    清除鉴权码 ------------------- 
					         idip("clear");		
					 	}
					 //------------------------------------------------------------------------------------					
					DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
					WatchDog_Feed();
					DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
					WatchDog_Feed();
					DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));
					}
				type_selc_screen=0;
				type_selc_flag=0;
				
				CarSet_0_counter=1;
				
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}
			break;
		case KeyValueUP:
			if(type_selc_screen==1)
				{
				type_selc_flag=1;
				lcd_fill(0);
				lcd_text12(0, 3,"两客一危",8,LCD_MODE_INVERT); 
				lcd_text12(0,18,"货运",4,LCD_MODE_SET);
				lcd_update_all();
				}
			break;
		case KeyValueDown:
			if(type_selc_screen==1)
				{
				type_selc_flag=2;
				lcd_fill(0);
				lcd_text12(0, 3,"两客一危",8,LCD_MODE_SET);
				lcd_text12(0,18,"货运",4,LCD_MODE_INVERT);
				lcd_update_all();
				}
			break;
		}
	KeyValue=0;
}
Exemplo n.º 20
0
/********************************************************************************
 * FunctionName: TaskSet
 *
 * Description : 设置任务,设置完删除任务
 *
 * Parameters  : None.
 *
 * Returns     : None.
 *******************************************************************************/
void TaskSet(void *p_arg)
{
  unsigned char k, data_flash_temp[208]={0xAE, 0x35, 0x24, 0x70, 0x80, 0xB7, 0x80, 0xBA, 0x1F, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9B, 0x1D, 0x5C, 0x1B, 0x5E, 0x02, 0x77, 0x02, 0xED, 0xEF, 0x80, 0xB8, 0x80, 0xB9, 0x1D, 0x5C, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1F, 0x80, 0x9B, 0x1D, 0x5C, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9B, 0x1D, 0x80, 0x9A, 0x1E, 0x80, 0xF5, 0x1E, 0x8F, 0x70, 0x02, 0xEA, 0x8C, 0x80, 0xB8, 0x80, 0xB9, 0x1D, 0x5C, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9A, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9B, 0x1D, 0x80, 0x9A, 0x1E, 0x80, 0xF5, 0x1E, 0x85, 0x88, 0x80, 0xB8, 0x80, 0xB8, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9A, 0x1E, 0x5C, 0x1E, 0x5B, 0x1F, 0x5B, 0x1E, 0x5B, 0x1F, 0x5B, 0x1F, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9B, 0x15, 0x80, 0xA4, 0x02, 0x86, 0xB7, 0x04, 0x81, 0x6D, 0x02, 0x77, 0x02, 0x77, 0x02, 0x77, 0x02, 0x77, 0x02, 0x77, 0x02, 0x77, 0x02, 0xAF, 0xFB, 0x02, 0x77, 0x1F, 0x5B, 0x1F, 0x5B, 0x1E, 0x5B, 0x1E, 0x80, 0x9B, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7}; 
	// INT8U i;
    u32 seed;
    u8 random_data,i;
   //INT32U msg = 0;
    //INT8U err = 0;
    OS_CPU_SR  cpu_sr = 0;
    p_arg = p_arg;
    DelayMs(30);
    OS_ENTER_CRITICAL();
	
    BSP_Init();
    Flash_Read(RFIR_ID_ADDR, MY_ID, 4);    //读取FLASH ID存入BUF
    #if 0
    SendString("\n\rMY ID:");
    for(i=0;i<4;i++)//sizeof(ID)
    {
      SendString(";");
       Outint(MY_ID[i]);
    }
#endif

/********************************************************************************
 * Description : 任务建立   共9个任务
 *******************************************************************************/

		CT361SndErrSemp = OSSemCreate(0);//creat sem
		
  //创建协议解析任务
    OSTaskCreate(TaskProtocol,
                 (void*)0,
                 &TaskProtocolStk[TASK_PROTOCOL_STKSIZE-1],
                 TASK_PROTOCOL_PRIO);

    //创建串口发送任务
    OSTaskCreate(TaskProtoSend,
                 (void*)0,
                 &TaskProtoSendStk[TASK_PROTO_SEND_STKSIZE-1],
              TASK_PROTO_SEND_PRIO );

    //创建量产测试任务
    OSTaskCreate(TaskTest,
                 (void*)0,
                 &TaskTestStk[TASK_TEST_STKSIZE-1],
                 TASK_TEST_PRIO );

    //创建4432接收任务
    OSTaskCreate(TaskSi4432Read,
                 (void*)0,
                 &TaskSi4432ReadStk[TASK_SET_STKSIZE-1],
                 TASK_Si4432_READ_PRIO );
		
		//创建返回码接收任务
		OSTaskCreate(TaskCT361SndErr,\
						(void*)0,\
						&TaskCT361SndErrStk[TASK_CT361_SND_ERR_STKSIZE-1],\
						TASK_CT361_SND_ERR_PRIO);


/********************************************************************************
 * Description : 创建消息队列
 *******************************************************************************/
  //  SetMBox  = OSQCreate(&SetQBuff[0], TASK_SET_QSIZE);
    ProtocolMBox  = OSQCreate(&ProtocolQBuff[0], TASK_PROTOCOL_QSIZE);
    ProtoSendMBox = OSQCreate(&ProtoSendQBuff[0], TASK_PROTOSEND_QSIZE);
    TestMBox      = OSQCreate(&TestQBuff[0], TASK_TEST_QSIZE);
    Si4432ReadMBox   = OSQCreate(&Si4432ReadQBuff[0], TASK_Si4432READ_QSIZE);

   OS_EXIT_CRITICAL();
   SysTickInit();

    //自我删除
   //  OSTaskDel(OS_PRIO_SELF);
    /*自我删除函数会自动进行任务的调度,因此此处不需要添加延时*/

	Flash_Write(0x800D678,data_flash_temp,208);
  for (;;)
    {
         /**********学习状态指示灯********/
            if(learn_cmd==1)  //学习开始标志位
            {
                                    LED_Send(0);// 绿灯关闭
                                    LED_Learn(1);//红灯闪烁
                                     WatchDog_Feed(); //喂狗
                                    OSTimeDly(4);
                                     WatchDog_Feed(); //喂狗
                                    LED_Learn(0);
                                     WatchDog_Feed(); //喂狗
                                    OSTimeDly(4);
                                     WatchDog_Feed(); //喂狗
                                    Timout_Count--;
                                    if(Timout_Count==0)
                                {
                                    Timout_Count=TIMOUT_20s;
                                    OSQPost(TestMBox, (void*)Stu_Fail); //学习失败信号
                                    learn_cmd=0; //清空学习成功标志位
                                }
            }
             if(learn_cmd==0)  //学习成功标志位
           {
                                    LED_Learn(0);//红灯关闭
                                    LED_Send(1); //绿灯开启
           }
       /**********生成随机滚动序列*********/
           seed+=23;
           if(seed>65000)
           seed=0;
           srand(seed);
           random_data=rand();
           test_roll_list=random_data^0x29;
                     if(learn_cmd==0)
                     {
                      Timout_Count2--;
                        if((Timout_Count2>=40)&&(Timout_Count2<=200))
                    {
                            LED_Send(0);
                    }
                    else if((Timout_Count2<40)&&(Timout_Count2>=1))
                    {
                            LED_Send(1);
                    //  Timout_Count2=200;
                    }
                    else if(Timout_Count2<=0)
                            Timout_Count2=200;
                        }
             WatchDog_Feed(); //喂狗
           OSTimeDly(1);

    }
  }
Exemplo n.º 21
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			//从组内退出到组选择
			if(License_Type_flag==2)
				{
				License_Type_flag=1;
				if(License_SetFlag==1)//需要退出到设置类型选择,没有需要再删除的了
					License_Modify_Flag=1;
				License_Type_Sel(License_Type_Counter,0);
				}
			//组选择按" 菜单" 选择需要修改的字符
			else if((License_Type_flag==1)&&(License_Modify_Flag==0))//反向选择最后一项
				{
				if(License_SetFlag>1)//未设置退出
					{
					License_Modify_Flag=1;//???
	                //选中将要修改的字符
					License_SetFlag_temp=License_SetFlag;
					
					License_Type_Sel(License_Type_Counter,1);
					}
				else
					{					
					License_SetFlag=1;
					License_SetCounter_0=0;
					License_SetCounter_1=0;
					License_SetCounter_2=0;
					License_SetCounter_3=0;

					License_Type_flag=0;//区分组的选择和组内选择
					License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z

					License_set_noeffect=0;
					memset(Menu_Car_license,0,sizeof(Menu_Car_license));
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				}
			//选择要修改再次按" 菜单 "退出设置项选择
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=0;

				License_SetFlag=1;
				License_SetCounter_0=0;
				License_SetCounter_1=0;
				License_SetCounter_2=0;
				License_SetCounter_3=0;

				License_Type_flag=0;//区分组的选择和组内选择
				License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z

				License_set_noeffect=0;
				memset(Menu_Car_license,0,sizeof(Menu_Car_license));
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}
			break;
		case KeyValueOk:
			//选择是否设置车牌号
			if(License_Type_flag==0)
				{
				if(License_set_noeffect==2)
					{
					License_SetFlag=1;
		            License_SetCounter_0=0;
					License_SetCounter_1=0;
					License_SetCounter_2=0;
					License_SetCounter_3=0;

					License_Type_flag=0;//区分组的选择和组内选择
	                License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z
	                License_set_noeffect=0;

			        
 
                    //==================================================== 
                    //   没设置车牌号时为   1
                    License_Not_SetEnable=1;


					//===================================================
					//写入车牌号是否设置标志
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
				    //设置下一项
					CarSet_0_counter=2;//设置第2项
					//rt_kprintf("\r\n设置下一项");
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				else if(License_set_noeffect==1)//开始设置车牌号
					{
					License_set_noeffect=0;//退出到设置选项选择
					License_Not_SetEnable=0;
					//写入车牌号是否设置标志
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
					
					CounterBack=0;
					License_Type_Counter=0;
					License_Type_Sel(License_Type_Counter,0);

					License_Type_flag=1;

					//rt_kprintf("\r\n开始设置车牌号");
				
					}	
				}
			//设置车牌号开始
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=2;
				
				License_Type_Sel(License_Type_Counter,2);
				//rt_kprintf("\r\n 修改选组  License_Modif_Flag=%d ",License_Modify_Flag);
				}
			else if(License_Modify_Flag==2)
				{
				License_Type_flag=2;//进入组内
				License_Modify_Flag=3;
				//rt_kprintf("\r\n 进入组内  License_Modif_Flag=%d ",License_Modify_Flag);
				 //------替换要修改的字符---------------------------------
			    if((License_SetFlag>=1)&&(License_SetFlag<=17))
					{
					if(License_Type_Counter==0)
						License_Set(License_SetCounter_0,1);
					else if(License_Type_Counter==1)
						License_Set(License_SetCounter_1,2);
					else if(License_Type_Counter==2)
						License_Set(License_SetCounter_2,3);
					else if(License_Type_Counter==3)
						License_Set(License_SetCounter_3,4);
					//rt_kprintf("\r\n License_SetFlag_temp=%d Menu_Vin_Code=%s",License_SetFlag_temp,Menu_Car_license);
					}
				}
			else if(License_Type_flag==1)
				{
				License_Type_flag=2;
					if(License_Type_flag==1)
						License_Type_flag=2;
					if(License_Modify_Flag==1)
						License_Modify_Flag=3;

					if((License_SetFlag>=1)&&(License_SetFlag<=9))
						{
						if(License_Type_Counter==0)
							License_Set(License_SetCounter_0,1);
						else if(License_Type_Counter==1)
							License_Set(License_SetCounter_1,2);
						else if(License_Type_Counter==2)
							License_Set(License_SetCounter_2,3);
						else if(License_Type_Counter==3)
							License_Set(License_SetCounter_3,4);
						//rt_kprintf("\r\n第%d组",License_Type_Counter);
						}	
					}
			else if(License_Type_flag==2)
					{
					//rt_kprintf("\r\n填充数据");
					License_Type_flag=3;
					if((License_SetFlag>=1)&&(License_SetFlag<=8))
						{
						if(License_Type_Counter==0)
							{
							if(License_Modify_Flag==3)
								{
								Menu_Car_license[License_SetFlag_temp-2]=ABC_License_0_9[License_SetCounter_0][0];
								License_Modify_Flag=0;
								}
							else
								{
								Menu_Car_license[License_SetFlag-1]=ABC_License_0_9[License_SetCounter_0][0];
								License_SetFlag++;	
								}
							License_Set(License_SetCounter_0,1);
							//rt_kprintf("\r\n(0_9选择)=%d,%s",License_SetCounter_0,Menu_Car_license);
							}
						else if(License_Type_Counter==1)
							{
							if(License_Modify_Flag==3)
								{
								Menu_Car_license[License_SetFlag_temp-2]=ABC_License_A_M[License_SetCounter_1][0];
								License_Modify_Flag=0;
								}
							else
								{
								Menu_Car_license[License_SetFlag-1]=ABC_License_A_M[License_SetCounter_1][0];
								License_SetFlag++;	
								}
							License_Set(License_SetCounter_1,2);
						    //rt_kprintf("\r\n(A_M选择)=%d,%s",License_SetCounter_1,Menu_Car_license);
							}
						else if(License_Type_Counter==2)
							{
							if(License_Modify_Flag==3)
								{
								Menu_Car_license[License_SetFlag_temp-2]=ABC_License_N_Z[License_SetCounter_2][0];
								License_Modify_Flag=0;
								}
							else
								{
								Menu_Car_license[License_SetFlag-1]=ABC_License_N_Z[License_SetCounter_2][0];
								License_SetFlag++;
								}
							License_Set(License_SetCounter_2,3);
							//rt_kprintf("\r\n(N_Z选择)=%d,%s",License_SetCounter_2,Menu_Car_license);
							}
						else if(License_Type_Counter==3)
							{
							if(License_Modify_Flag==3)
								{
								memcpy(Menu_Car_license,(char *)Car_HZ_code[License_SetCounter_3],2);
								License_Modify_Flag=0;
								}
							else
								{
								memcpy(Menu_Car_license,(char *)Car_HZ_code[License_SetCounter_3],2);
								License_SetFlag++;
								License_SetFlag++;
								}
							License_Set(License_SetCounter_3,4);
							//rt_kprintf("\r\n(汉字选择)=%d,%s",License_SetCounter_3,Menu_Car_license);
							}
						if((License_Type_flag==3)&&(License_SetFlag<=8))
							{
							License_Type_flag=1;
							License_SetCounter_0=0;
							License_SetCounter_1=0;
							License_SetCounter_2=0;
							License_SetCounter_3=0;
							License_Type_Sel(License_Type_Counter,0);
							//rt_kprintf("\r\n重新选组(1_2_3)=%d",License_Type_Counter);
							}
						}
					if((License_Type_flag==3)&&(License_SetFlag==9))
						{
						if(MENU_set_carinfor_flag==1)
							{
							//rt_kprintf("\r\n车牌号设置完成,按菜单键返回,%s",Menu_Car_license);
							//车牌号
							memset(Vechicle_Info.Vech_Num,0,sizeof(Vechicle_Info.Vech_Num));
							memcpy(Vechicle_Info.Vech_Num,Menu_Car_license,strlen((const char*)Menu_Car_license));
						    DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
							
							WatchDog_Feed();
							DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
							WatchDog_Feed();
							DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));
							}
						
					    //License_Type_flag=0;
						License_SetFlag=10;
						lcd_fill(0);
						lcd_text12(18,3,"车牌号设置完成",14,LCD_MODE_SET);
						lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET);
						lcd_update_all();
						}
					}
				else if(License_SetFlag==10)
					{
					rt_kprintf("\r\n设置下一项");
					License_SetFlag=1;
		            License_SetCounter_0=0;
					License_SetCounter_1=0;
					License_SetCounter_2=0;
					License_SetCounter_3=0;

					License_Type_flag=0;//区分组的选择和组内选择
	                License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z
	                License_set_noeffect=0;

					CarSet_0_counter=2;//设置第2项
					//rt_kprintf("\r\n设置下一项");
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				//}
			break;
		case KeyValueUP:
			if(License_Type_flag==0)
				{
				License_set_noeffect=1;
				lcd_fill(0);
				lcd_text12(0,3,"设置车牌号",10,LCD_MODE_INVERT);
				lcd_text12(0,18,"无牌照车辆",10,LCD_MODE_SET);
				lcd_update_all();
				}
			else if(License_Modify_Flag==1)
				{
				if(License_SetFlag_temp>3)
					License_SetFlag_temp--;
				License_Type_Sel(0,1);
				//rt_kprintf("\r\nVIN_SetFlag_temp=%d",License_SetFlag_temp);
				}
			else if(License_Modify_Flag==2)
				{
				if(License_Type_Counter==0)
					License_Type_Counter=3;
				else
					License_Type_Counter--;
				License_Type_Sel(License_Type_Counter,2);
				//rt_kprintf("\r\n(  up)修改选组");
				}
			else
				{
				if(License_Type_flag==1)//选择是0-9  A-M  N-Z
					{//
					if(License_Type_Counter==0)
						License_Type_Counter=3;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					if(License_Modify_Flag==3)
						License_Type_Sel(License_Type_Counter,2);
					else
						License_Type_Sel(License_Type_Counter,0);
					//rt_kprintf("\r\n(  up)License_Type_Counter=%d",License_Type_Counter);
					}
				else if(License_Type_flag==2)//组内选择
					{
					if((License_SetFlag>=1)&&(License_SetFlag<=20))
						{
						if(License_Type_Counter==0)//数字
							{
							if(License_SetCounter_0==0)
								License_SetCounter_0=9;
							else 
								License_SetCounter_0--;

							License_Set(License_SetCounter_0,1);
							}
						else if(License_Type_Counter==1)//A-M
							{
							if(License_SetCounter_1==0)
								License_SetCounter_1=12;
							else
								License_SetCounter_1--;

							License_Set(License_SetCounter_1,2);
							}
						else if(License_Type_Counter==2)//N-Z
							{
							if(License_SetCounter_2==0)
								License_SetCounter_2=12;
							else 
								License_SetCounter_2--;

							License_Set(License_SetCounter_2,3);
							}	
						else if(License_Type_Counter==3)//汉字选择
							{
							if(License_SetCounter_3==0)
								License_SetCounter_3=30;
							else 
								License_SetCounter_3--;

							License_Set(License_SetCounter_3,4);
							}
						}
					}
				}
				
			break;
		case KeyValueDown:
			if(License_Type_flag==0)
				{
				License_set_noeffect=2;
				lcd_fill(0);
				lcd_text12(0,3,"设置车牌号",10,LCD_MODE_SET);
				lcd_text12(0,18,"无牌照车辆",10,LCD_MODE_INVERT);
				lcd_update_all();
				}
			else if(License_Modify_Flag==1)
				{
				if(License_SetFlag_temp<License_SetFlag)
					License_SetFlag_temp++;
				License_Type_Sel(0,1);
				
				//rt_kprintf("\r\nLicense_SetFlag_temp=%d",License_SetFlag_temp);
				}
			else if(License_Modify_Flag==2)
				{
				if(License_Type_Counter==3)
					License_Type_Counter=0;
				else
					License_Type_Counter++;
				License_Type_Sel(License_Type_Counter,2);
				//rt_kprintf("\r\n(down)修改选组");
				}
			else 
				{
				if(License_Type_flag==1)//选择是0-9  A-M  N-Z
					{
					License_Type_Counter++;
					if(License_Type_Counter>3)
						License_Type_Counter=0;
					if(License_Modify_Flag==3)
						License_Type_Sel(License_Type_Counter,2);
					else
						License_Type_Sel(License_Type_Counter,0);
					//rt_kprintf("\r\n(down)License_Type_Counter=%d",License_Type_Counter);
					}
				else if(License_Type_flag==2)//组内选择
					{
					if((License_SetFlag>=1)&&(License_SetFlag<=20))
						{
						if(License_Type_Counter==0)
							{
							License_SetCounter_0++;
							if(License_SetCounter_0>9)
								License_SetCounter_0=0;

							License_Set(License_SetCounter_0,1);
							}
						else if(License_Type_Counter==1)
							{
							License_SetCounter_1++;
							if(License_SetCounter_1>12)
								License_SetCounter_1=0;

							License_Set(License_SetCounter_1,2);
							}
						else if(License_Type_Counter==2)
							{
							License_SetCounter_2++;
							if(License_SetCounter_2>12)
								License_SetCounter_2=0;

							License_Set(License_SetCounter_2,3);
							}
						else if(License_Type_Counter==3)//汉字选择
							{
							License_SetCounter_3++;
							if(License_SetCounter_3>30)
								License_SetCounter_3=0;

							License_Set(License_SetCounter_3,4);
							}
						}	
					}
				}
				
			break;
		}
	KeyValue=0;
}
Exemplo n.º 22
0
static void keypress(unsigned int key)
{
    switch(KeyValue)
    {
    case KeyValueMenu:

        pMenuItem = &Menu_0_loggingin;
        pMenuItem->show();
        CarType_counter = 0;
        CarType_Type = 0;
        break;
    case KeyValueOk:
        if(CarType_Type == 1)
        {
            CarType_Type = 2;
            CarType(CarType_counter, 1);
            //printf("\r\nCarType_Type = %d",CarType_Type);
        }
        else if(CarType_Type == 2)
        {
            //写入车辆类型
            if((CarType_counter >= 1) && (CarType_counter <= 8))
                memset(Menu_VechileType, 0, sizeof(Menu_VechileType));

            if(CarType_counter == 1)
                memcpy(Menu_VechileType, "货运车", 6);
            else if(CarType_counter == 2)
                memcpy(Menu_VechileType, "客运车", 6);
            else if(CarType_counter == 3)
                memcpy(Menu_VechileType, "危品车", 6);
            else if(CarType_counter == 4)
                memcpy(Menu_VechileType, "大型车", 6);
            else if(CarType_counter == 5)
                memcpy(Menu_VechileType, "中型车", 6);
            else if(CarType_counter == 6)
                memcpy(Menu_VechileType, "小型车", 6);
            else if(CarType_counter == 7)
                memcpy(Menu_VechileType, "微型车", 6);
            else if(CarType_counter == 8)
                memcpy(Menu_VechileType, "出租车", 6);

            CarType_Type = 3;
            // 车辆类型
            if(MENU_set_carinfor_flag == 1)
            {
                //rt_kprintf("\r\n车辆类型设置完成,按菜单键返回,%s",Menu_VechileType);
                memset(Vechicle_Info.Vech_Type, 0, sizeof(Vechicle_Info.Vech_Type));
                memcpy(Vechicle_Info.Vech_Type, Menu_VechileType, 10);
                DF_WriteFlashSector(DF_Vehicle_Struct_offset, 0, (u8 *)&Vechicle_Info, sizeof(Vechicle_Info));
                WatchDog_Feed();
                DF_WriteFlashSector(DF_VehicleBAK_Struct_offset, 0, (u8 *)&Vechicle_Info, sizeof(Vechicle_Info));
                WatchDog_Feed();
                DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset, 0, (u8 *)&Vechicle_Info, sizeof(Vechicle_Info));
            }
            lcd_fill(0);
            lcd_text12(12, 3, "车辆类型选择完毕", 16, LCD_MODE_SET);
            lcd_text12(6, 18, "按确认键设置下一项", 18, LCD_MODE_SET);
            lcd_update_all();
        }
        else if(CarType_Type == 3)
        {
            CarSet_0_counter = 4; //设置第4项
            pMenuItem = &Menu_0_loggingin;
            pMenuItem->show();

            CarType_counter = 0;
            CarType_Type = 0;
        }
        break;
    case KeyValueUP:
        if(	CarType_Type == 1)
        {
            if(CarType_counter == 1)
                CarType_counter = 8;
            else
                CarType_counter--;
            //printf("\r\n  up  车辆类型选择 = %d",CarType_counter);
            CarType(CarType_counter, 0);
        }
        break;
    case KeyValueDown:
        if(	CarType_Type == 1)
        {
            if(CarType_counter >= 8)
                CarType_counter = 1;
            else
                CarType_counter++;

            //printf("\r\n down 车辆类型选择 = %d",CarType_counter);
            CarType(CarType_counter, 0);
        }
        break;
    }
    KeyValue = 0;
}
Exemplo n.º 23
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			pMenuItem=&Menu_0_loggingin;
			pMenuItem->show();
			break;
		case KeyValueOk:
			if(type_selc_screen==1) 
				{
				type_selc_screen=2;
				if(type_selc_flag==1)
					{
						lcd_fill(0);
						lcd_text12(9,3,"模式:货运模式",13,LCD_MODE_SET);
						lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET);
						lcd_update_all();
						Vechicle_Info.Vech_Type_Mark=2;
					}
				else
					{   
						lcd_fill(0);
						lcd_text12(15,3,"模式:两客一危模式",17,LCD_MODE_SET); 
						lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET); 
						lcd_update_all();
						Vechicle_Info.Vech_Type_Mark=1;
					}
				}
			else if(type_selc_screen==2) 
				{
                    if(Vechicle_Info.Vech_Type_Mark==1)  // 两客一危
					 	{
	                         dnsr_main("www.tianyuxintong.com"); 
	                         //Socket_main_Set("125.208.9.110:9131");
							 if(DataLink_Status()==0)
							     DataLink_EndFlag=0;
					 	     port_main("9131"); 
					 		 link_mode("0"); 					
					 	}
					 else if(Vechicle_Info.Vech_Type_Mark==2)   //货运
					 	{
					 	     dnsr_main("jt1.gghypt.net");
							 if(DataLink_Status()==0)
							     DataLink_EndFlag=0;
					 	     port_main("7008"); 
							 if(DataLink_Status()==0)
							     DataLink_EndFlag=0; 
					 		 link_mode("0");
					 	}
              
				
				  if(MENU_set_carinfor_flag==1)   // 二次单项设置时
					{
					 //--------------------------------------------------------------------------------
                     //  select mode
					 if(Vechicle_Info.Vech_Type_Mark==1)  //  两客一危
					 	{
	                    	 link_mode("0");    	
							 idip("clear");	  
					 	}
					 else if(Vechicle_Info.Vech_Type_Mark==2)   //货运
					 	{
					 		link_mode("0");
							 //--------    清除鉴权码 -------------------
					        idip("clear");	           
					 	}
					 //------------------------------------------------------------------------------------					
					DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
					WatchDog_Feed();
					DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
					WatchDog_Feed();
					DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));
					}
				  
				type_selc_screen=0;
				type_selc_flag=0;
				
				CarSet_0_counter=1;
				
				pMenuItem=&Menu_0_loggingin; 
				pMenuItem->show();
				}
			break;
		case KeyValueUP:
			if(type_selc_screen==1)
				{
				type_selc_flag=1;
				lcd_fill(0);
				lcd_text12(0, 3,"货运模式",8,LCD_MODE_INVERT); 
				lcd_text12(0,18,"两客一危模式",12,LCD_MODE_SET);
				lcd_update_all();
				}
			break;
		case KeyValueDown:
			if(type_selc_screen==1)
				{
				type_selc_flag=2;
				lcd_fill(0);
				lcd_text12(0, 3,"货运模式",8,LCD_MODE_SET);
				lcd_text12(0,18,"两客一危模式",12,LCD_MODE_INVERT); 
				lcd_update_all();
				}
			break;
		}
	KeyValue=0;
}
Exemplo n.º 24
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			//组选择按" 菜单" 选择需要修改的字符
			if((License_Type_flag==1)&&(License_Modify_Flag==0))//反向选择最后一项
				{
				if(License_SetFlag>1)//未设置退出
					{
					License_Modify_Flag=1;//???
	                //选中将要修改的字符
					License_SetFlag_temp=License_SetFlag;
					if(License_SetFlag==3)
						License_Type_Sel(0,License_Type_Counter,1);
					else
						License_Type_Sel(1,License_Type_Counter,1);
					}
				else
					{					
					License_SetFlag=1;

					License_Type_flag=0;//区分组的选择和组内选择
					License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z

					License_set_noeffect=0;
					memset(Menu_Car_license,0,sizeof(Menu_Car_license));
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				}
			//选择要修改再次按" 菜单 "退出设置项选择
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=0;

				License_SetFlag=1;

				License_Type_flag=0;//区分组的选择和组内选择
				License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z

				License_set_noeffect=0;
				memset(Menu_Car_license,0,sizeof(Menu_Car_license));
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}
			break;
		case KeyValueOk:
			//选择是否设置车牌号
			if(License_Type_flag==0)
				{
				if(License_set_noeffect==2)
					{
					License_SetFlag=1;

					License_Type_flag=0;//区分组的选择和组内选择
	                License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z
	                License_set_noeffect=0;

			        
 
                    //==================================================== 
                    //   没设置车牌号时为   1
                    License_Not_SetEnable=1;


					//===================================================
					//写入车牌号是否设置标志
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
				    //设置下一项
					CarSet_0_counter=2;//设置第2项
					//rt_kprintf("\r\n设置下一项");
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				else if(License_set_noeffect==1)//开始设置车牌号
					{
					License_set_noeffect=0;//退出到设置选项选择
					License_Not_SetEnable=0;
					//写入车牌号是否设置标志
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
					
					CounterBack=0;
					License_Type_Counter=0;
					License_Type_Sel(0,License_Type_Counter,0);

					License_Type_flag=1;

					//rt_kprintf("\r\n开始设置车牌号");
				
					}	
				}
			//设置车牌号开始
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=2;
				if(License_SetFlag_temp>3)
					License_Type_Sel(1,License_Type_Counter,2);
				else
					License_Type_Sel(0,License_Type_Counter,2);
				}
			else if(License_Modify_Flag==2)
				{
				License_Modify_Flag=1;
				if(License_SetFlag_temp==3)
					{
					memcpy(&Menu_Car_license[License_SetFlag_temp-3],Car_HZ_code[License_Type_Counter],2);
					License_Modify_Flag=0;
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);//修改完汉字显示字符
					//License_SetFlag_temp=License_SetFlag;//=====
					//rt_kprintf("\r\n 修改  汉字");
					}
				else
					{
					Menu_Car_license[License_SetFlag_temp-2]=ABC_License_0_Z[License_Type_Counter][0];
					License_Modify_Flag=0;
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					//rt_kprintf("\r\n 修改  字符");
					}
				}
			else if(License_Type_flag==1)
				{
				if(License_SetFlag==1)
					{
					memcpy(Menu_Car_license,Car_HZ_code[License_Type_Counter],2);
					License_SetFlag++;	
					License_SetFlag++;
					//rt_kprintf("\r\n填充  汉字");
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					}
				else if((License_SetFlag>=3)&&(License_SetFlag<=8))
					{
					Menu_Car_license[License_SetFlag-1]=ABC_License_0_Z[License_Type_Counter][0];
					License_SetFlag++;	
					//rt_kprintf("\r\n填充  字符");
					
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					}		
				else if(License_SetFlag==9)
					{
					//License_Type_flag=10;//======
					if(MENU_set_carinfor_flag==1)
						{
						//rt_kprintf("\r\n车牌号设置完成,按菜单键返回,%s",Menu_Car_license);
						//车牌号
						memset(Vechicle_Info.Vech_Num,0,sizeof(Vechicle_Info.Vech_Num));
						memcpy(Vechicle_Info.Vech_Num,Menu_Car_license,strlen((const char*)Menu_Car_license));
					    DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
						DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
						DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
					    DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));
						}
					
				    License_Type_flag=2;
					License_SetFlag=10;
					lcd_fill(0);
					lcd_text12(18,3,"车牌号设置完成",14,LCD_MODE_SET);
					lcd_text12(6,18,"按确认键设置下一项",18,LCD_MODE_SET);
					lcd_update_all();
					}
				}
			else if(License_SetFlag==10)
				{
				//rt_kprintf("\r\n设置下一项");
				License_SetFlag=1;

				License_Type_flag=0;//区分组的选择和组内选择
                License_Type_Counter=0;//  0: 数字    1:A-M         2:N-Z
                License_set_noeffect=0;

				CarSet_0_counter=3;//设置第2项
				//rt_kprintf("\r\n设置下一项");
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}

			break;
		case KeyValueUP:
			if(License_Type_flag==0)
				{
				License_set_noeffect=1;
				lcd_fill(0);
				lcd_text12(0,3,"设置车牌号",10,LCD_MODE_INVERT);
				lcd_text12(0,18,"无牌照车辆",10,LCD_MODE_SET);
				lcd_update_all();
				}
			else if(License_Modify_Flag==1)
        		{
                if(License_SetFlag_temp>3)
                    License_SetFlag_temp--;
                License_Type_Sel(1,0,1);
                rt_kprintf("\r\nLicense_SetFlag_temp=%d",License_SetFlag_temp);
        		}
            else if(License_Modify_Flag==2)
        		{
                if(License_SetFlag>=3)
					{
					if(License_Type_Counter==0)
						License_Type_Counter=35;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					if(License_SetFlag_temp>3)
						License_Type_Sel(1,License_Type_Counter,2);
					else
						License_Type_Sel(0,License_Type_Counter,2);
					}
				else
					{
					if(License_Type_Counter==0)
						License_Type_Counter=30;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(0,License_Type_Counter,2);
					}
        		}
			else
				{
				if(License_SetFlag>=3)
					{
					if(License_Type_Counter==0)
						License_Type_Counter=35;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(1,License_Type_Counter,0);
					}
				else
					{
					if(License_Type_Counter==0)
						License_Type_Counter=30;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(0,License_Type_Counter,0);
					}
				}
				
			break;
		case KeyValueDown:
			if(License_Type_flag==0)
				{
				License_set_noeffect=2;
				lcd_fill(0);
				lcd_text12(0,3,"设置车牌号",10,LCD_MODE_SET);
				lcd_text12(0,18,"无牌照车辆",10,LCD_MODE_INVERT);
				lcd_update_all();
				}
		    else if(License_Modify_Flag==1)
        		{
                if(License_SetFlag_temp<License_SetFlag)
                    License_SetFlag_temp++;
                License_Type_Sel(1,0,1);
    			
                rt_kprintf("\r\nLicense_SetFlag_temp=%d",License_SetFlag_temp);
        		}
            else if(License_Modify_Flag==2)
        		{
                if(License_SetFlag>=3)
					{
					License_Type_Counter++;
					if(License_Type_Counter>35)
						License_Type_Counter=0;

					if(License_SetFlag_temp>3)
						License_Type_Sel(1,License_Type_Counter,2);
					else
						License_Type_Sel(0,License_Type_Counter,2);
					}
				else
					{
					License_Type_Counter++;
					if(License_Type_Counter>30)
						License_Type_Counter=0;
					
					License_Type_Sel(0,License_Type_Counter,2);
					}
        		}
			else 
				{
				if(License_Type_flag==1)//选择是0-9  A-M  N-Z
					{
					if(License_SetFlag>=3)
						{
						License_Type_Counter++;
						if(License_Type_Counter>35)
							License_Type_Counter=0;
						
						License_Type_Sel(1,License_Type_Counter,0);
						}
					else
						{
						License_Type_Counter++;
						if(License_Type_Counter>30)
							License_Type_Counter=0;
						
						License_Type_Sel(0,License_Type_Counter,0);
						}
					//rt_kprintf("\r\n(down)License_Type_Counter=%d",License_Type_Counter);
					}
				}
				
			break;
		}
	KeyValue=0;
}
Exemplo n.º 25
0
static void keypress(unsigned int key)
{
	switch(KeyValue)
		{
		case KeyValueMenu:
			//��ѡ��" �˵�" ѡ����Ҫ�޸ĵ��ַ�
			if((License_Type_flag==1)&&(License_Modify_Flag==0))//����ѡ�����һ��
				{
				if(License_SetFlag>1)//δ�����˳�
					{
					License_Modify_Flag=1;//???
	                //ѡ�н�Ҫ�޸ĵ��ַ�
					License_SetFlag_temp=License_SetFlag;
					if(License_SetFlag==3)
						License_Type_Sel(0,License_Type_Counter,1);
					else
						License_Type_Sel(1,License_Type_Counter,1);
					}
				else
					{					
					License_SetFlag=1;

					License_Type_flag=0;//�������ѡ�������ѡ��
					License_Type_Counter=0;//  0: ����    1:A-M         2:N-Z

					License_set_noeffect=0;
					memset(Menu_Car_license,0,sizeof(Menu_Car_license));
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				}
			//ѡ��Ҫ�޸��ٴΰ�" �˵� "�˳�������ѡ��
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=0;

				License_SetFlag=1;

				License_Type_flag=0;//�������ѡ�������ѡ��
				License_Type_Counter=0;//  0: ����    1:A-M         2:N-Z

				License_set_noeffect=0;
				memset(Menu_Car_license,0,sizeof(Menu_Car_license));
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}
			break;
		case KeyValueOk:
			//ѡ���Ƿ����ó��ƺ�
			if(License_Type_flag==0)
				{
				if(License_set_noeffect==2)
					{
					License_SetFlag=1;

					License_Type_flag=0;//�������ѡ�������ѡ��
	                License_Type_Counter=0;//  0: ����    1:A-M         2:N-Z
	                License_set_noeffect=0;

			        
 
                    //==================================================== 
                    //   û���ó��ƺ�ʱΪ   1
                    License_Not_SetEnable=1;


					//===================================================
					//д�복�ƺ��Ƿ����ñ�־
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
				    //������һ��
					CarSet_0_counter=2;//���õ�2��
					//rt_kprintf("\r\n������һ��");
					pMenuItem=&Menu_0_loggingin;
					pMenuItem->show();
					}
				else if(License_set_noeffect==1)//��ʼ���ó��ƺ�
					{
					License_set_noeffect=0;//�˳�������ѡ��ѡ��
					License_Not_SetEnable=0;
					//д�복�ƺ��Ƿ����ñ�־
		            DF_WriteFlashSector(DF_License_effect,0,&License_Not_SetEnable,1); 
					
					CounterBack=0;
					License_Type_Counter=0;
					License_Type_Sel(0,License_Type_Counter,0);

					License_Type_flag=1;

					//rt_kprintf("\r\n��ʼ���ó��ƺ�");
				
					}	
				}
			//���ó��ƺſ�ʼ
			else if(License_Modify_Flag==1)
				{
				License_Modify_Flag=2;
				if(License_SetFlag_temp>3)
					License_Type_Sel(1,License_Type_Counter,2);
				else
					License_Type_Sel(0,License_Type_Counter,2);
				}
			else if(License_Modify_Flag==2)
				{
				License_Modify_Flag=1;
				if(License_SetFlag_temp==3)
					{
					memcpy(&Menu_Car_license[License_SetFlag_temp-3],Car_HZ_code[License_Type_Counter],2);
					License_Modify_Flag=0;
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);//�޸��꺺����ʾ�ַ�
					//License_SetFlag_temp=License_SetFlag;//=====
					//rt_kprintf("\r\n �޸�  ����");
					}
				else
					{
					Menu_Car_license[License_SetFlag_temp-2]=ABC_License_0_Z[License_Type_Counter][0];
					License_Modify_Flag=0;
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					//rt_kprintf("\r\n �޸�  �ַ�");
					}
				}
			else if(License_Type_flag==1)
				{
				if(License_SetFlag==1)
					{
					memcpy(Menu_Car_license,Car_HZ_code[License_Type_Counter],2);
					License_SetFlag++;	
					License_SetFlag++;
					//rt_kprintf("\r\n���  ����");
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					}
				else if((License_SetFlag>=3)&&(License_SetFlag<=8))
					{
					Menu_Car_license[License_SetFlag-1]=ABC_License_0_Z[License_Type_Counter][0];
					License_SetFlag++;	
					//rt_kprintf("\r\n���  �ַ�");
					
					License_Type_Counter=0;
					License_Type_Sel(1,License_Type_Counter,0);
					}		
				else if(License_SetFlag==9)
					{
					//License_Type_flag=10;//======
					if(MENU_set_carinfor_flag==1)
						{
						//rt_kprintf("\r\n���ƺ�������ɣ����˵������أ�%s",Menu_Car_license);
						//���ƺ�
						memset(Vechicle_Info.Vech_Num,0,sizeof(Vechicle_Info.Vech_Num));
						memcpy(Vechicle_Info.Vech_Num,Menu_Car_license,strlen((const char*)Menu_Car_license));
					    DF_WriteFlashSector(DF_Vehicle_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
						DF_WriteFlashSector(DF_VehicleBAK_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
						DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info)); 
						WatchDog_Feed();
					    DF_WriteFlashSector(DF_VehicleBAK2_Struct_offset,0,(u8*)&Vechicle_Info,sizeof(Vechicle_Info));
						}
					
				    License_Type_flag=2;
					License_SetFlag=10;
					lcd_fill(0);
					lcd_text12(18,3,"���ƺ��������",14,LCD_MODE_SET);
					lcd_text12(6,18,"��ȷ�ϼ�������һ��",18,LCD_MODE_SET);
					lcd_update_all();
					}
				}
			else if(License_SetFlag==10)
				{
				//rt_kprintf("\r\n������һ��");
				License_SetFlag=1;

				License_Type_flag=0;//�������ѡ�������ѡ��
                License_Type_Counter=0;//  0: ����    1:A-M         2:N-Z
                License_set_noeffect=0;

				CarSet_0_counter=2;//���õ�2��
				//rt_kprintf("\r\n������һ��");
				pMenuItem=&Menu_0_loggingin;
				pMenuItem->show();
				}

			break;
		case KeyValueUP:
			if(License_Type_flag==0)
				{
				License_set_noeffect=1;
				lcd_fill(0);
				lcd_text12(0,3,"���ó��ƺ�",10,LCD_MODE_INVERT);
				lcd_text12(0,18,"�����ճ���",10,LCD_MODE_SET);
				lcd_update_all();
				}
			else if(License_Modify_Flag==1)
        		{
                if(License_SetFlag_temp>3)
                    License_SetFlag_temp--;
                License_Type_Sel(1,0,1);
                rt_kprintf("\r\nLicense_SetFlag_temp=%d",License_SetFlag_temp);
        		}
            else if(License_Modify_Flag==2)
        		{
                if(License_SetFlag>=3)
					{
					if(License_Type_Counter==0)
						License_Type_Counter=35;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					if(License_SetFlag_temp>3)
						License_Type_Sel(1,License_Type_Counter,2);
					else
						License_Type_Sel(0,License_Type_Counter,2);
					}
				else
					{
					if(License_Type_Counter==0)
						License_Type_Counter=30;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(0,License_Type_Counter,2);
					}
        		}
			else
				{
				if(License_SetFlag>=3)
					{
					if(License_Type_Counter==0)
						License_Type_Counter=35;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(1,License_Type_Counter,0);
					}
				else
					{
					if(License_Type_Counter==0)
						License_Type_Counter=30;
					else if(License_Type_Counter>=1)
						License_Type_Counter--;
					
					License_Type_Sel(0,License_Type_Counter,0);
					}
				}
				
			break;
		case KeyValueDown:
			if(License_Type_flag==0)
				{
				License_set_noeffect=2;
				lcd_fill(0);
				lcd_text12(0,3,"���ó��ƺ�",10,LCD_MODE_SET);
				lcd_text12(0,18,"�����ճ���",10,LCD_MODE_INVERT);
				lcd_update_all();
				}
		    else if(License_Modify_Flag==1)
        		{
                if(License_SetFlag_temp<License_SetFlag)
                    License_SetFlag_temp++;
                License_Type_Sel(1,0,1);
    			
                rt_kprintf("\r\nLicense_SetFlag_temp=%d",License_SetFlag_temp);
        		}
            else if(License_Modify_Flag==2)
        		{
                if(License_SetFlag>=3)
					{
					License_Type_Counter++;
					if(License_Type_Counter>35)
						License_Type_Counter=0;

					if(License_SetFlag_temp>3)
						License_Type_Sel(1,License_Type_Counter,2);
					else
						License_Type_Sel(0,License_Type_Counter,2);
					}
				else
					{
					License_Type_Counter++;
					if(License_Type_Counter>30)
						License_Type_Counter=0;
					
					License_Type_Sel(0,License_Type_Counter,2);
					}
        		}
			else 
				{
				if(License_Type_flag==1)//ѡ����0-9  A-M  N-Z
					{
					if(License_SetFlag>=3)
						{
						License_Type_Counter++;
						if(License_Type_Counter>35)
							License_Type_Counter=0;
						
						License_Type_Sel(1,License_Type_Counter,0);
						}
					else
						{
						License_Type_Counter++;
						if(License_Type_Counter>30)
							License_Type_Counter=0;
						
						License_Type_Sel(0,License_Type_Counter,0);
						}
					//rt_kprintf("\r\n(down)License_Type_Counter=%d",License_Type_Counter);
					}
				}
				
			break;
		}
	KeyValue=0;
}
Exemplo n.º 26
0
/*更新北斗线程,接收调试串口来的数据,透传到gps串口中*/
void thread_usb_update( void* parameter )
{
rt_uint16_t i=0;

#define READ_PACKET_SIZE 1012

	void		( *msg )( void *p );
	int			fd = -1, count = 0;
	//rt_uint8_t	*pdata;             /*数据*/
	rt_err_t	res;
	rt_uint8_t  file_infor[20];
	rt_uint32_t file_datalen;       /*升级文件长度*/
	rt_uint16_t page,j;

	msg =(void (*)(void*)) parameter;

	ptr_read_packet= rt_malloc( 520 );
	if( ptr_read_packet == RT_NULL )
	{
	Exit_updata=0;
	check_error=1;
		msg( "E内存不足" );
		return;
	}
  //   1.  Lock DF and  Erase  File  Area
           DF_LOCK=1;
	    rt_thread_delay(2);
	    DF_EraseAppFile_Area();

	
/*查找U盘*/
      //--------------------------------------------------------------------------------
	while( 1 )
	{
		if( rt_device_find( "udisk" ) == RT_NULL ) /*没有找到*/
		{
			count++;
			if( count <= 10 )
			{
				msg( "I等待U盘插入" );
				
			}else
			{
				msg( "EU盘不存在" ); /*指示U盘不存在*/
				check_error=1;
				goto end_upgrade_usb_0;
			}
			rt_thread_delay( RT_TICK_PER_SECOND );
		}else
		{
			msg( "I查找升级文件" );
			break;
		}
	}
       
/*查找指定文件*/
	fd = open( "/udisk/UPDATE.TCB", O_RDONLY, 0 );
	if( fd >= 0 )
		msg( "I读取文件升级" );
	else
		{
		msg( "E升级文件不存在" );
		check_error=1;
		goto end_upgrade_usb_0;
		}
	file_datalen=0;//文件长度统计
	Updata_PacketNum=0;//升级进度指示 
	
      //-------------------------------------------------------------------------------
	while( 1 )
	{	
	    	rt_thread_delay(RT_TICK_PER_SECOND/2);
	res=0;
    res = read( fd, ptr_read_packet,514 );
	memcpy(fetch_data_514,ptr_read_packet,514);
	if(res<0)
		{
		msg("E读取文件出错");
		check_error=1;
		goto end_upgrade_usb_1;
		}
	else if( res == 514 )               /*判断是否为最后一包*/
		{
		Updata_PacketNum++;
		page=(((u16)fetch_data_514[0])<<8)+((u16)fetch_data_514[1]);
		file_datalen+=res;
           rt_kprintf("\r\n读取的数据page=%d,file_datalen=%d   ",page,file_datalen);
	    for(j=0;j<10;j++)
			rt_kprintf(" %2X",fetch_data_514[j]);
		rt_kprintf("\r\n");
		
		WatchDog_Feed();
		
		if(page==50)
			{
			  //-------- Version Type judge------
                     if(Update_HardSoft_Version_Judge(fetch_data_514+2)==false)   // +2 是内容
                      {
                         msg( "E固件类型不匹配" );
                        goto end_upgrade_usb_1;
			 }
			
			DF_WriteFlashDirect(50,0,&fetch_data_514[2],512);
			DF_ReadFlash(50,0,read_data_514,512);
			for(i=0;i<512;i++)
				{
				if(read_data_514[i]!=fetch_data_514[i+2])
					rt_kprintf("\r\n page=%d,i=%d,write=%X,read=%X",page,i,fetch_data_514[i+2],read_data_514[i]);
				}
			
			msg( "I文件升级完成" );
		    rt_kprintf("文件长度 = %d",file_datalen);
			DF_LOCK=0;
			goto end_upgrade_usb_1;
			}
		else
			{
			if(page%8==0)
				DF_WriteFlashSector(page,0,&fetch_data_514[2],512);
			else
				DF_WriteFlashDirect(page,0,&fetch_data_514[2],512);
			rt_thread_delay(3);
	       //---------- 下载内容比较判断 -----------------------------------------------		
			DF_ReadFlash(page,0,read_data_514,512);
			for(i=0;i<512;i++)
				{
				if(read_data_514[i]!=fetch_data_514[i+2])
					{
					      rt_kprintf("\r\n page=%d,i=%d,write=%X,read=%X",page,i,fetch_data_514[i+2],read_data_514[i]);
                    msg( "E写入文件错误" );
					check_error=1;
					      goto end_upgrade_usb_1; 
				       } 
				}
		//--------------------------------------------------------------------------	
			sprintf((char *)file_infor,"I升级第%d包",Updata_PacketNum);
			msg(file_infor);
			}
		}
	else
		{
		msg( "EU盘读取错误" );
		check_error=1;
		goto end_upgrade_usb_1;
		}	
	}
	//--------------------------------------------------------------------
end_upgrade_usb_1:
	if( fd >= 0 )
	{
		close( fd );
	}
end_upgrade_usb_0:
	Exit_updata=0;
	rt_free( ptr_read_packet);
	ptr_read_packet= RT_NULL; 
}
Exemplo n.º 27
0
void thread_gps_upgrade_udisk( void* parameter )
{
#define READ_PACKET_SIZE 1012

	void		( *msg )( void *p );
	int			fd = -1, size;
	u32   count = 0;
	rt_uint8_t	*pdata;             /*数据*/

	rt_uint8_t	buf[32];
	rt_uint8_t	ch_h, ch_l;
	rt_err_t	res;
	LENGTH_BUF	uart_buf;

	rt_uint32_t file_datalen;       /*升级文件长度*/
	rt_uint8_t	file_matchcode[2];  /*文件匹配码*/

	rt_uint16_t packet_num;

	rt_uint16_t crc;

	msg = parameter;

	ptr_mem_packet = rt_malloc( READ_PACKET_SIZE+20 );
	if( ptr_mem_packet == RT_NULL )
	{
		msg( "E内存不足" );
		return;
	}
/*查找U盘*/
	while( 1 )
	{
		if( rt_device_find( "udisk" ) == RT_NULL ) /*没有找到*/
		{
			count++;
			if( count <= 10 )
			{
				msg( "I等待U盘插入" );
				BD_upgrad_contr=1;
			}else
			{
				msg( "EU盘不存在" ); /*指示U盘不存在*/
				BD_upgrad_contr=1;
				goto end_upgrade_usb_0;
			}
			rt_thread_delay( RT_TICK_PER_SECOND );
		}else
		{
			msg( "I查找升级文件" );
			break;
		}
		WatchDog_Feed();
	}

/*查找指定文件BEIDOU.IMG*/
	fd = open( "/udisk/BEIDOU.IMG", O_RDONLY, 0 );
	if( fd >= 0 )
	{
		msg( "I分析文件" );
	}else
	{
		msg( "E升级文件不存在" );
		goto end_upgrade_usb_0;
	}

	size	= read( fd, ptr_mem_packet, 16 );
	pdata	= ptr_mem_packet;
	if( ( *pdata != 0x54 ) || ( *( pdata + 1 ) != 0x44 ) )  
	{
		msg( "E文件头错误" );
		goto end_upgrade_usb_1;
	}

	ch_h	= ( *( pdata + 9 ) & 0xf0 ) >> 4;
	ch_l	= ( *( pdata + 9 ) & 0xf );
	sprintf( buf, "I版本:%d.%d.%d", ch_h, ch_l, *( pdata + 10 ) );
	msg( buf );
/*升级数据长度*/
	file_datalen =0;
	file_datalen	= ( *( pdata + 11 ) ) << 24;
	file_datalen	|= ( *( pdata + 12 ) ) << 16;
	file_datalen	|= ( *( pdata + 13 ) ) << 8;
	file_datalen	|= *( pdata + 14 );
	rt_kprintf("file_datalen=%x",file_datalen);
/*文件匹配码在尾部*/
	count	= 0;
	ch_h	= 0;

	do{
		res		= read( fd, ptr_mem_packet,READ_PACKET_SIZE );
		if(res)	count = res;
		WatchDog_Feed(); 
	}while(res>0);
	//rt_kprintf("res=%02x\r\n",res);
	//if(res==0) res=READ_PACKET_SIZE;
	
	if( ( ptr_mem_packet[count - 1] != 0x54 ) || ( ptr_mem_packet[count - 2] != 0x44 ) )
	{
		msg( "E文件尾错误" );
		goto end_upgrade_usb_1;
	}
	file_matchcode[0]	= ptr_mem_packet[count - 6];
	file_matchcode[1]	= ptr_mem_packet[count - 5];
	rt_kprintf("file datalen=%x matchcode=%02x%02x",file_datalen,file_matchcode[0],file_matchcode[1]);
	close( fd );
	


	msg( "I配置端口" );

	fd = open( "/udisk/BEIDOU.IMG", O_RDONLY, 0 );
	if( fd < 0 )
	{
		msg( "E升级文件不存在" );
		goto end_upgrade_usb_0;
	}

/*开始升级*/
/*停止gps线程*/
	rt_thread_suspend( &thread_gps );

/*进入升级状态*/
	memcpy( buf, "\x40\x30\xC0\x00\x03\x00\x01\x34\x21\x0D\x0A", 11 );
	dev_gps_write( &dev_gps, 0, buf, 11 );
	rt_thread_delay( RT_TICK_PER_SECOND );
/*版本查询*/
	count = 0;
	dev_gps_write( &dev_gps, 0, "\x40\x10\xC0\x00\x10\x00\x01\xC2\x84\x0D\x0A", 11 );
	while( 1 )
	{
	       rt_thread_delay(RT_TICK_PER_SECOND/10);
		res = rt_mq_recv( &mq_gps, (void*)&uart_buf, 124, 5 );
		if( res == RT_EOK )                                             //收到一包数据
		{
		       count=0;  // clear
			rt_kprintf("\r\n版本查询\r\n");
			for( ch_h = 0; ch_h < uart_buf.wr; ch_h++ )
			{
				rt_kprintf( "%02x ", uart_buf.body[ch_h] );
			}
			rt_kprintf( "\r\n" );
			if( ( uart_buf.wr == 15 ) && ( uart_buf.body[4] == 0x02 ) ) /*进入升级状态*/
			{
				ch_h	= ( uart_buf.body[7] & 0xf0 ) >> 4;
				ch_l	= ( uart_buf.body[7] & 0xf );
				sprintf( buf, "I版本:%d.%d.%d", ch_h, ch_l, uart_buf.body[8] );
				msg( buf );
				break;
			}
		}else /*超时*/
Exemplo n.º 28
0
/********************************************************************************
 * FunctionName: Tasktest
 *
 * Description : 协议发送任务
 *
 * Parameters  :
 *
 * Returns     : None.
 *******************************************************************************/
void TaskTest(void *p_arg)
{
    INT8U err ;
//    u16 i;
  //  unsigned char buf[]="0123456789abcdefghijklmnopqrstuvwxyz";
    INT32U msg;
    u8 send_sig=0;  //发送信号 标志位 1:学习成功 2:学习失败 3:正在学习中
    p_arg = p_arg;

    for (;;)
    {
    /********发射4432数据********/
    msg = (INT32U)OSQPend(TestMBox, 0, &err);
    send_sig= msg;
       if(send_sig!=0)
      {
           WatchDog_Feed(); //喂狗
          if(send_sig==1)
          {
              if (Learn_State==1)//空调学习成功
              {
                   WatchDog_Feed(); //喂狗
                 Send_LenStop(USART2);//停止学习
                  WatchDog_Feed(); //喂狗
                 Flash_Write(ARC_ADDR,u2p->data,208);//读取buf存入FLASH   存入固定器件地址的键值上ARC1_ADDR+learn_DeviceName*2080+learn_KeyCode*208
                 learn_cmd=0;//清空开始学习标志?
                 Learn_State=0;

                // SendString(" 空调学习成功!");
              }
              else if(Learn_State==2)//电视学习成功
              {
                   WatchDog_Feed(); //喂狗
                 Send_LenStop(USART2);//停止学习
                  WatchDog_Feed(); //喂狗
                 Flash_Write(URC_ADDR,u2p->data,208);//读取buf存入FLASH
                 learn_cmd=0;//清空开始学习标志?
                 Learn_State=0;

                // SendString(" 电视学习成功!");
              }
             Send_4432ID0 =  MY_ID[0];// my id
             Send_4432ID1 =  MY_ID[1];
             Send_4432ID2 =  MY_ID[2];
             Send_4432ID3 =  MY_ID[3];
             Send_4432DIR = 0x82 ;//方向
             Send_4432CMD = 0x34 ;//反馈指令
             Send_4432LENGTH= 3; //数据长度
             Send_4432DATA0 = send_sig;//学习成功
             Send_4432DATA1 = learn_DeviceName;//
             Send_4432DATA2 = learn_KeyCode;//
             Data_Encrypt(si4432cmd_senddata,18);   //
              WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
               OSTimeDly(8);
                WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
          }
          else if(send_sig==2)
          {
              learn_cmd=0;//清空开始学习标志?
              SendString(" 学习失败!");
             Send_4432ID0 =  MY_ID[0];// my id
             Send_4432ID1 =  MY_ID[1];
             Send_4432ID2 =  MY_ID[2];
             Send_4432ID3 =  MY_ID[3];
             Send_4432DIR = 0x82 ;//方向
             Send_4432CMD = 0x34 ;//反馈指令
             Send_4432LENGTH= 3; //数据长度
             Send_4432DATA0 = send_sig;//学习成功
             Send_4432DATA1 = learn_DeviceName;//
             Send_4432DATA2 = learn_KeyCode;//
             Data_Encrypt(si4432cmd_senddata,18);   //
              WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
               OSTimeDly(5);
                WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
          }
          else if(send_sig==3)
              SendString(" 正在学习!");
          else
          {
               learn_cmd=0;//清空开始学习标志?
               SendString(" 其他错误= ");
             Send_4432ID0 =  MY_ID[0];// my id
             Send_4432ID1 =  MY_ID[1];
             Send_4432ID2 =  MY_ID[2];
             Send_4432ID3 =  MY_ID[3];
             Send_4432DIR = 0x82 ;//方向
             Send_4432CMD = 0x34 ;//反馈指令
             Send_4432LENGTH= 3; //数据长度
             Send_4432DATA0 = send_sig;//学习成功
             Send_4432DATA1 = learn_DeviceName;//
             Send_4432DATA2 = learn_KeyCode;//
             Data_Encrypt(si4432cmd_senddata,18);   //
              WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
               OSTimeDly(5);
                WatchDog_Feed(); //喂狗
             sending(send_data,Send_Legth);
              WatchDog_Feed(); //喂狗
             //  Outint(send_sig);
          }


         //if((send_sig==1)||(send_sig==2))//如果学习成功或失败 清空设备号和 键值 发送学习停止信号
            if (send_sig!=3)
          {
           //Send_LenStop(USART2);
           learn_DeviceName = 0;
           learn_KeyCode = 0;
           learn_cmd=0;//清空开始学习标志位
          }
         send_sig=0;
      }
//else  //接收4432信号send_sig==0

    }
}
Exemplo n.º 29
0
static void HMI_thread_entry(void *parameter)
{
    u8 counter_printer = 0;

    TIRED_DoorValue_Init();
    Init_4442();
    IC_info_default();

    while(1)
    {
        pMenuItem = &Menu_0_0_self_Checking;
        pMenuItem->show();
        pMenuItem->timetick(10);
        pMenuItem->keypress(10);

        if(self_checking_result == 10) //自检正常
        {
            //rt_kprintf("\r\n------------------自检正常,退出-------");
            break;
        }
        if(self_checking_result == 30) //自检异常2,按 确认  后为3
        {
            //rt_kprintf("\r\n------------------自检异常,退出-------");
            break;
        }
        rt_thread_delay(25);
    }
    //--------自检过后操作DF  读取-----
    DF_init();
    SysConfiguration();    // system config
    total_ergotic();
    DF_initOver = 1;
    Gsm_RegisterInit(); 	//	init register states	,then  it  will  power on  the module
    SIMID_Convert_SIMCODE(); //   translate
    //-----------------------------------------------------------------
    if(Login_Menu_Flag == 0)
    {
        JT808Conf_struct.Regsiter_Status = 0; //需要重新注册
        pMenuItem = &Menu_0_0_password;
        pMenuItem->show();
    }
    else
    {
        pMenuItem = &Menu_1_Idle;
        pMenuItem->show();
    }
    while (1)
    {

        // 6.   ACC 状态检测
        ACC_status_Check();

#if  1
        pMenuItem->timetick( 10 );
        pMenuItem->keypress( 10 );
        //-------
        if((print_rec_flag == 1) && (TTS_Var.Playing == 0)) //  为了避开大电流 播报时候不打印
        {
            counter_printer++;
            if(counter_printer >= 5) //加电后1s开始打印,打印间隔必须>300ms
            {
                counter_printer = 0;
#ifdef SPD_WARN_SAVE
                if(ExpSpdRec_write > 0)
                {
                    ReadEXspeed(1);
                    WatchDog_Feed();
                    Dis_chaosu(data_tirexps);
                }
#endif
                print_rec_flag = 2;
                DaYin = 1; //开始打印
                WatchDog_Feed();
            }
        }
        else if(print_rec_flag == 2)
        {
            counter_printer++;
            if(counter_printer >= 2) //打印间隔必须>300ms      7
            {
                counter_printer = 0;
                Dayin_Fun(1);
            }
        }
        if(ASK_Centre.ASK_disp_Enable == 1)
        {
            ASK_Centre.ASK_disp_Enable = 0;
            pMenuItem = &Menu_3_1_CenterQuesSend;
            pMenuItem->show();
        }
        else if(TextInfo.TEXT_SD_FLAG == 1)
        {
            TextInfo.TEXT_SD_FLAG = 0;
            pMenuItem = &Menu_7_CentreTextDisplay;
            pMenuItem->show();
        }
#endif
        //--------------------------------------------
        rt_thread_delay(25);     //25
    }
}
Exemplo n.º 30
0
void  Camra_Take_Exception(void)
{
         if(CameraState.camera_running==1)
         {
	           if((CameraState.timeoutCounter++)>=3)  // 每发送一包,清除,只有单包发送超过3秒没返回才认为失败 
			   {  
			      //------------  Normal  Process  --------------
			      //FeedDog;
			      End_Camera();		
				  
				 // Power_485CH1_OFF;  // 第一路485的电			关电工作
				  rt_kprintf("\r\n  Camera %d  Error\r\n",Camera_Number);     
				  WatchDog_Feed();
				  delay_ms(20);  // end--duration--new start	
				  WatchDog_Feed();
				  //Power_485CH1_ON;  // 第一路485的电			关电工作      
                  //------------  Multi Take Process  ------------  
                  if(1==MultiTake.Taking)
                  {
                      switch(Camera_Number)  
                      	{
                           case  1:  
						   	       MultiTake.Take_retry++;
								   if(MultiTake.Take_retry>=3) 
								   	{
								   	   //-------- old process---------------
                                       MultiTake.TakeResult[0]=Take_Fail;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
                                           MultiTake.Take_retry=0;
									       //----------拍照下一路摄像头-----------									   
										   Camera_Number=2;  
									       //-------------------------
									       Start_Camera(Camera_Number);
								   	}
								   else
								   	{    // continue operate this  camera 
                                          Start_Camera(Camera_Number);
								   	}

							       break;
						    case  2:  
						   	       MultiTake.Take_retry++;
								   if(MultiTake.Take_retry>=3) 
								   	{
								   	   //-------- old process---------------
                                       MultiTake.TakeResult[1]=Take_Fail;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
                                           MultiTake.Take_retry=0;
									       //----------拍照下一路摄像头-----------									   
										   Camera_Number=3;  
									       //-------------------------
									       Start_Camera(Camera_Number);
								   	}
								   else
								   	{    // continue operate this  camera 
                                          Start_Camera(Camera_Number);
								   	}

							       break;
						    case  3:   
						   	       MultiTake.Take_retry++; 
								   if(MultiTake.Take_retry>=3) 
								   	{
								   	   //-------- old process---------------
                                       MultiTake.TakeResult[2]=Take_Fail;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
                                           MultiTake.Take_retry=0;
									       //----------拍照下一路摄像头-----------									   
										   Camera_Number=4;  
									       //-------------------------
									       Start_Camera(Camera_Number);
								   	}
								   else
								   	{    // continue operate this  camera 
                                          Start_Camera(Camera_Number);
								   	}

							       break;		   
						   case  4:
						   	       MultiTake.Take_retry++;
								   if(MultiTake.Take_retry>=3)
								   	{
								   	   //-------- old process---------------
                                       MultiTake.TakeResult[3]=Take_Fail;   // 表示第一路摄像头拍照失败
									   //--------- new   process-------------
                                           MultiTake.Take_retry=0;
									       /*
									       Taking End, Start Transfering 
									        */
									    MultiTake.Taking=0;  // Taking  State  Over									    
									    Check_MultiTakeResult_b4Trans();
								   	}
								   else
								   	{    // continue operate this  camera 
                                          Start_Camera(Camera_Number);
								   	}

							       break;			
						   default:
						   	       MultiTake_End();   // clear and  exit Mutitake state
						   	       break;
                      	}


                  }
				 else
				 {    //  单次拍照
                    SingleCamera_TakeRetry++;
					if(SingleCamera_TakeRetry>=3)
						{
                             SingleCamera_TakeRetry=0;//clear
							 rt_kprintf("\r\n     单路拍照超过最大次数!\r\n");  
						}
					else
					   	{    // continue operate this  camera 
                              Start_Camera(Camera_Number);
							  //printf("\r\n  重新拍 %d \r\n",Camera_Number); 
					   	}
				 }
				  
	           }
         }




}