Ejemplo n.º 1
0
void dhcp_callback(enum dhcp_event event)
{	
	switch(event)
	{
	case dhcp_event_timeout:
		DBG_INFO("[dhcp]: timeout\n");
		const ip_address ip = NET_IP_ADDRESS;
		const ip_address gw = NET_IP_GATEWAY;
		const ip_address nm = NET_IP_NETMASK;
		ip_init(&ip, &nm, &gw);		
		netstat(stdout, NETSTAT_OPT_ALL);
		break;
	case dhcp_event_lease_acquired:
		DBG_INFO("[dhcp]: lease acquired\n");
		netstat(stdout, NETSTAT_OPT_ALL);
		break;
	case dhcp_event_lease_expiring:
		DBG_INFO("[dhcp]: lease expiring\n");
		break;
	case dhcp_event_lease_expired:
		DBG_INFO("[dhcp]: lease expired\n");
		break;
	case dhcp_event_lease_denied:
		DBG_INFO("[dhcp]: lease denied\n");
		break;
	case dhcp_event_error:
		DBG_ERROR("[dhcp]: error\n");
		break;
	default:
		DBG_ERROR("[dhcp]: unknown event (0x%x)\n", event);
		break;
	}	
}
Ejemplo n.º 2
0
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam)
{
        switch (Msg) {
	case WM_USER:
		switch (lParam) {
		case WM_LBUTTONDBLCLK:
			ShowWindow(hWndDlg, SW_SHOW);
			return TRUE;
		}
		break;
		
	case WM_TERM:
		do_stop(hWndDlg);
		break;

	case WM_INITDIALOG:
		_hwnd = hWndDlg;
		do_init();
		do_stop(_hwnd);

		start_stop(hWndDlg); /* didn't we say on by default? ;D */
		break;

	case WM_SYSCOMMAND:
		if ((wParam & 0xfff0) == SC_MINIMIZE) {
			minimize(hWndDlg);
			return TRUE;
		}
		break;

        case WM_CLOSE:
		minimize(hWndDlg);
                return TRUE;

        case WM_COMMAND:
                switch(wParam) {
		case IDOK:
			start_stop(hWndDlg);
			return TRUE;
		case IDCANCEL:
			netstat();
			return TRUE;

		case IDC_BUTTON1:
			EndDialog(hWndDlg, 0);
			return TRUE;

		case IDC_BUTTON2:
			hof();
			return TRUE;
		}
		break;
	}

	return FALSE;
}
Ejemplo n.º 3
0
void timer_callback(timer_t timer, void * data)
{
	static struct date_time dt;
//	ds1338_get_date_time(&dt);
/*	DBG_INFO("[time]: %02d:%02d:%02d\n",
			dt.hours,
			dt.minutes,
			dt.seconds
		);*/
	netstat(stdout, NETSTAT_OPT_ALL);
}
Ejemplo n.º 4
0
int
get_file_over_ftp (net_t *netpolicy)
{
    char buffer [HUGE0], *ptr;
    struct hostent *phostent;
    struct sockaddr_in client, pasvclient;
    int rval;
    unsigned long filesz, received;
        
    slassert (netpolicy != NULL);

    fprintf (stdout, netpolicy->msg);
    fflush (stdout);

    if (!netpolicy->savepart) slassert (!netpolicy->checkstamp);

    if (!netpolicy->overwrite &&
        file_exist (netpolicy->destpath, NULL, true)) /* regular file exist */
    {
        return shutdown_net_t (netpolicy, FILE_DOWNLOADED, "Already downloaded");
    }    

    __act (phostent = gethostbyname (netpolicy->hostname), -1, "Cannot resolve host");
  
    client.sin_family = phostent->h_addrtype;
    client.sin_port   = htons ((unsigned short) netpolicy->port);
    memcpy (&client.sin_addr.s_addr, phostent->h_addr_list[0], phostent->h_length);

    __act ((netpolicy->sd = socket (client.sin_family, SOCK_STREAM, 0)) >= 0, -1, NULL);

    __act ((rval = t_connect
     (netpolicy->sd, (struct sockaddr *)&client, sizeof client, netpolicy->timeout)) >= 0, -1, NULL);

    /* starting FTP transaction */
    fprintf (stdout, "\r%s [Starting ftp transaction]", netpolicy->msg);
    fflush (stdout);

    netpolicy->ftpquit = true;

    /* read server ready */
    __act (t_recv (netpolicy->sd, buffer, HUGE) >= 0, FILE_NOT_DOWNLOADED, "Server not ready");

    __act (strncmp (buffer, "220", 3) == 0, FILE_NOT_DOWNLOADED, "Server not ready");
    
    /* anonymous login */
    clrline (stdout, strlen (netpolicy->msg) + 30);
    fprintf (stdout, "\r%s [FTP anonymous login]", netpolicy->msg);
    fflush (stdout);

    /* sending username */
    __act (!ftp_act (netpolicy, "USER anonymous\r\n", "331"), FILE_NOT_DOWNLOADED, "User failed");
    
    /* sending pass */
    __act (!ftp_act (netpolicy, "PASS [email protected]\r\n", "230"), FILE_NOT_DOWNLOADED, "Pass failed");

    clrline (stdout, strlen (netpolicy->msg) + 25);
    fprintf (stdout, "\r%s [Retrieving file]", netpolicy->msg);
    fflush (stdout);
    
    __act (!ftp_act (netpolicy, "SYST\r\n", "215"),   FILE_NOT_DOWNLOADED, "Syst error");
    __act (!ftp_act (netpolicy, "TYPE I\r\n", "200"), FILE_NOT_DOWNLOADED, "Type I error");
    __act (!ftp_act (netpolicy, "PASV\r\n", "227"),   FILE_NOT_DOWNLOADED, "Pasv error");
    
    /* obtain ip and port on passive mode */
    __act (ptr = strchr (netpolicy->ftpreply, '('), FILE_NOT_DOWNLOADED, "Error on pasv mode");
    
    sscanf (ptr, "(%hu,%hu,%hu,%hu,%hu,%hu)",
        &netpolicy->pasv[0], &netpolicy->pasv[1],	/* IP */
        &netpolicy->pasv[2], &netpolicy->pasv[3],	/* IP */
	    &netpolicy->pasv[4], &netpolicy->pasv[5]);	/* port: pasv[4] * 256 + pasv[5] */

    snprintf (netpolicy->pasvip, sizeof netpolicy->pasvip, "%hu.%hu.%hu.%hu",
        netpolicy->pasv[0], netpolicy->pasv[1], netpolicy->pasv[2], netpolicy->pasv[3]);
    
    netpolicy->pasvport = netpolicy->pasv[4] * 256 + netpolicy->pasv[5];

    netpolicy->pasvsd     = socket (AF_INET, SOCK_STREAM, 0);
    pasvclient.sin_family = AF_INET;
    pasvclient.sin_port   = htons((unsigned short) netpolicy->pasvport);

    __act (inet_pton (AF_INET, netpolicy->pasvip, &pasvclient.sin_addr) == 1 &&
           !t_connect (netpolicy->pasvsd, (struct sockaddr *) &pasvclient, sizeof pasvclient, netpolicy->timeout),
           -1, "ftp pasv error");
  
    snprintf (buffer, HUGE, "SIZE %s\r\n", netpolicy->srcpath);
    __act (!ftp_act (netpolicy, buffer, "213"), FILE_NOT_DOWNLOADED,
          (atoi (netpolicy->ftpreply) == 550) ? "File not found" : "Size error");

    filesz = atoi (netpolicy->ftpreply + 4);	/* 4 = strlen ("213 ") */

    /* require file */
    snprintf (buffer, HUGE, "RETR %s\r\n", netpolicy->srcpath);
    __act (!ftp_act (netpolicy, buffer, "150"), FILE_NOT_DOWNLOADED, "Retr error");
    
    checkstamp (netpolicy, netpolicy->pasvsd);

    __act (netpolicy->oldstamp != 0, FILE_ALREADY_UPDATE, "Already update");
       
    if (netpolicy->savepart)
    {
        slassert ((strlen (netpolicy->destpath) + strlen (".part")) < sizeof (netpolicy->destpath));
        strcat (netpolicy->destpath, ".part");
    }

    __act (netpolicy->fddest = fopen (netpolicy->destpath, "wb"), -1, netpolicy->destpath);

    if (netpolicy->oldstamp == 1)
    {
        fwrite (netpolicy->stamprecv, 1, STAMPSZ, netpolicy->fddest);
    }

    received = (netpolicy->checkstamp) ? STAMPSZ : 0;

    clrline (stdout, strlen (netpolicy->msg) + 25);
    netstat (NETSTAT_INIT, 0, 0, 0); /* init */
    while ((rval = recv (netpolicy->pasvsd, buffer, HUGE, 0)) > 0)
    {
        received += (unsigned long) rval;
        fprintf (stdout, "\r%s [%s]", netpolicy->msg, netstat (0, 1, received, filesz));
        fflush (stdout);
        fwrite (buffer, 1, rval, netpolicy->fddest);
    }
    fprintf (stdout, "\r%s [%s]\n",
        netpolicy->msg, netstat (NETSTAT_END, 1, received, filesz)); /* finish, flush 100% */
    fflush (stdout);
    
    return shutdown_net_t (netpolicy, 0, NULL);
}
Ejemplo n.º 5
0
int
get_file_over_http (net_t *netpolicy)
{
    char buffer[HUGE0];
    unsigned long received, filesz;
    int rval;
    struct stat st;
    struct hostent *phostent;
    struct sockaddr_in client;

    slassert (netpolicy != NULL);

    fprintf (stdout, netpolicy->msg);
    fflush (stdout);

    /* sanity check */
    if (!netpolicy->savepart)
	 slassert (!netpolicy->checkstamp);

    if (!netpolicy->overwrite &&
        file_exist (netpolicy->destpath, &st, true)) /* regular file exist */
    {
        return shutdown_net_t (netpolicy, FILE_DOWNLOADED, "Already downloaded");
    }

    __act (phostent = gethostbyname (netpolicy->hostname), -1, "Cannot resolve host");
    
    client.sin_family = phostent->h_addrtype;
    client.sin_port   = htons ((unsigned short) netpolicy->port);
    memcpy (&client.sin_addr.s_addr, phostent->h_addr_list[0], phostent->h_length);

    __act ((netpolicy->sd = socket (client.sin_family, SOCK_STREAM, 0)) >= 0, -1, NULL);
    
    __act (!t_connect
    (netpolicy->sd, (struct sockaddr *)&client, sizeof client, netpolicy->timeout), -1, NULL);
    
    snprintf (buffer, HUGE, HTTP_TEMPLATE, netpolicy->srcpath, netpolicy->hostname);
    __act (send
    (netpolicy->sd, buffer, strlen(buffer), 0) == (int) strlen(buffer), -1, NULL);
    
    /* receive http header and save to `filesz' length of file required */
    __act ((rval = read_http_header (netpolicy->sd)) > 0, FILE_NOT_DOWNLOADED, "File Not Found");
    

    filesz = (unsigned long) rval;
    checkstamp (netpolicy, netpolicy->sd);

    __act (netpolicy->oldstamp != 0, FILE_ALREADY_UPDATE, "Already update");
    
    if (netpolicy->savepart)
    {
        slassert ((strlen (netpolicy->destpath) + strlen (".part")) < sizeof (netpolicy->destpath));
        strcat (netpolicy->destpath, ".part");
    }

    __act (netpolicy->fddest = fopen (netpolicy->destpath, "wb"), -1, netpolicy->destpath);
    
    
    if (netpolicy->oldstamp == 1)
    {
       fwrite (netpolicy->stamprecv, 1, STAMPSZ, netpolicy->fddest);
    }

    received = (netpolicy->checkstamp) ? STAMPSZ : 0;

    netstat (NETSTAT_INIT, 0, 0, 0); /* init */
    while ((rval = recv (netpolicy->sd, buffer, HUGE, 0)) > 0)
    {
        received += rval;
        fprintf (stdout, "\r%s [%s]", netpolicy->msg, netstat (0, 1, received, filesz));
        fflush (stdout);
        fwrite (buffer, 1, rval, netpolicy->fddest);
    }
    fprintf (stdout, "\r%s [%s]\n",
        netpolicy->msg, netstat (NETSTAT_END, 1, received, filesz)); /* finish, flush 100% */
    fflush (stdout);
    
    return shutdown_net_t (netpolicy, 0, NULL);
}
Ejemplo n.º 6
0
uint32_t CmdShowData(char *outputstr,T_MESSAGE *message)
{
  uint8_t i;
  uint8_t status=0;
  char *p;
  struct tm time_now;
  time_t old_time;
  
  static float MeaRecordTab[MEANUM];
  static uint8_t DiRecording[16];
  
  old_time = 0;
  memset (outputstr,0,1314);
  
  p=outputstr;
  
  switch(message->m_type)
  {
  case CMD_AI:  
#if MEAUPDATE_METHOD==MEMBLKCP
    status = AiQuerry();
    if(status)
    {
      I2C_MeasureTab[23]=GetTemperature();
#endif
#if LINGUA==EN
      sprintf(p, "╔════════╦═════total meas:%3d═════╦════════╗\r\n",MEANUM);
      p+=strlen("╔════════╦═════total meas:%3d═════╦════════╗\r\n");
#endif
#if LINGUA==CH
      sprintf(p, "╔════════╦═════遥测量总数:%3d═════╦════════╗\r\n",MEANUM);
      p+=strlen("╔════════╦═════遥测量总数:%3d═════╦════════╗\r\n");
#endif
      for(i=0;i<MEANUM;i++)
      {
        if ((i+1) % 4)
        {
          if((16==i)||(17==i)||(21==i)||(22==i))
          {
            //											if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale)
            //											   {
            //											    sprintf(p, "║%-4s:%s%6.1f%s %4s",MeaPropTab[i].Title,rouge_mutation,\
              //												I2C_MeasureTab[i],normale,MeaPropTab[i].Unit);
              //											   p+=strlen(rouge_mutation);
              //                  							   p+=strlen(normale);
              //											   }
              //											else 
              sprintf(p, "║%-4s:%6.1f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit);
              p+=strlen("║XXXX:01234.5XXXX");
          }
          else if(18==i)
          {
            //											if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale)
            //											    {
            //												sprintf(p, "║%-4s:%s%6.1f %s%4s",MeaPropTab[i].Title,rouge_mutation,\
              //												I2C_MeasureTab[i],normale,MeaPropTab[i].Unit);
              //												p+=strlen(rouge_mutation);
              //                  							    p+=strlen(normale);
              //											    }
              //											else 
              sprintf(p, "║%-4s:%6.4f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit);
              p+=strlen("║XXXX:01.2345XXXX");
          }
          else
          {
            //											if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale)
            //											    {
            //												sprintf(p, "║%-4s:%s%6.1f%s %4s",MeaPropTab[i].Title,rouge_mutation,\
              //												I2C_MeasureTab[i],normale,MeaPropTab[i].Unit);
              //												p+=strlen(rouge_mutation);
              //                  							    p+=strlen(normale);
              //											   }
              //											else 
              sprintf(p, "║%-4s:%6.2f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit);
              p+=strlen("║XXXX:0123.45XXXX");
          }
        }
        else
        {	
          //									if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale)
          //											    {
          //												sprintf(p, "║%-4s:%s%6.1f %s%4s",MeaPropTab[i].Title,rouge_mutation,\
            //												I2C_MeasureTab[i],normale,MeaPropTab[i].Unit);
            //												p+=strlen(rouge_mutation);
            //                  							    p+=strlen(normale);
            //											    }
            //											else 
            sprintf(p, "║%-4s:%6.2f %-4s║\r\n",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit);
            p+=strlen("║XXXX:0123.45XXXX║\r\n");
            //sprintf(p, "╠════════╬════════╬════════╬════════╣\r\n");
            if((MEANUM-1)==i)  sprintf(p, "╚════════╩════════╩════════╩════════╝\r\n");
            p+=strlen("╠════════╬════════╬════════╬════════╣\r\n");
        }
        
        MeaRecordTab[i]=I2C_MeasureTab[i];
      }
#if MEAUPDATE_METHOD==MEMBLKCP
    }
    else
    {
#if LINGUA== EN
      sprintf(outputstr,"can't read data from AI board \r\n");
      p+=strlen("can't read data from AI board \r\n");	
#endif
#if LINGUA== CH
      sprintf(outputstr,"无法读取AI数据 \r\n");
      p+=strlen("无法读取AI数据 \r\n");	
#endif
    }
#endif
    break;
    
  case CMD_DI:
#if LINGUA== EN	
    sprintf(p, "╔══totaldis%2d══╗\r\n",16);
    p+=strlen("╔══totaldis%2d══╗\r\n");
#endif
#if LINGUA ==CH	
    sprintf(p, "╔══遥信总数%2d══╗\r\n",16);
    p+=strlen("╔══遥信总数%2d══╗\r\n");
    
#endif    
    for(i=0;i<8;i++)
    {  
      if(1==DiStatus_DI[i].Value)
      {
        
        sprintf(p, "║ %-3d %s◆%s ",i+1,rouge,normale);
        if(DiRecording[i]!=DiStatus_DI[i].Value)  sprintf(p, "║ %-3d %s◆%s ",i+1,rouge_mutation,normale);
        p+=strlen("║ %-3d ◆ ");
        p+=strlen(rouge);
        p+=strlen(normale);
        
      }  
      else 
      {
        
        sprintf(p, "║ %-3d %s◇%s ",i+1,vert,normale); 
        if(DiRecording[i]!=DiStatus_DI[i].Value)  sprintf(p, "║ %-3d %s◇%s ",i+1,vert_mutation,normale);
        p+=strlen("║ %-3d ◇ ");
        p+=strlen(vert);
        p+=strlen(normale);
        
      } 
      DiRecording[i]=DiStatus_DI[i].Value;                  
      
      if(1==DiStatus_DI[i+8].Value)
      {
        
        sprintf(p, "║ %-3d %s◆%s ║\r\n",i+9,rouge,normale);
        if(DiRecording[i+8]!=DiStatus_DI[i+8].Value)  sprintf(p, "║ %-3d %s◆%s ║\r\n",i+9,rouge_mutation,normale);
        p+=strlen("%║ -3d ◆ ║\r\n");
        p+=strlen(rouge);
        p+=strlen(normale);
        
      }  
      else 
      {
        
        sprintf(p, "║ %-3d %s◇%s ║\r\n",i+9,vert,normale); 
        if(DiRecording[i+8]!=DiStatus_DI[i+8].Value)  sprintf(p, "║ %-3d %s◇%s ║\r\n",i+9,vert_mutation,normale);
        p+=strlen("║ %-3d ◇ ║\r\n");
        p+=strlen(vert);
        p+=strlen(normale);
        
      }
      if(7==i)
      {
        sprintf(p, "╚════╩════╝\r\n");
        p+=strlen("╚════╩════╝\r\n");
      }
      else
      {
        sprintf(p, "╠════╬════╣\r\n");
        p+=strlen("╚════╩════╝\r\n"); 
      }
      DiRecording[i+8]=DiStatus_DI[i+8].Value;
      
    }   
    break;
    
  case CMD_TI:
    if(Can_Online)
    {  
      for(i=0;i<4;i++)
      {
        if(CAN_MeasureTab[i]>6000) sprintf(p, "%s\r\n","OffSccope");
        sprintf(p, "%s:%5d %s\r\n",MeaPropTab[24+i].Title,CAN_MeasureTab[i],MeaPropTab[24+i].Unit);
        p+=strlen("XXXXX:01234XX\r\n");
      }
#if LINGUA ==EN
      sprintf(p,"enter the number of 4~20mA channel\r\n");
      p=p+strlen("enter the number of 4~20mA channel\r\n")+strlen(DevNameStr);
#endif
#if LINGUA ==CH
      sprintf(p,"输入4~20mA通道序号查看电流显示\r\n");
      p=p+strlen("输入4~20mA通道序号查看电流显示\r\n")+strlen(DevNameStr);
#endif
      Shell_State=TI_mA;
    }
    else
    {
#if LINGUA== EN
      sprintf(outputstr,"can't read data from TI board \r\n");
      p+=strlen("can't read data from TI board \r\n");	
#endif
#if LINGUA== CH
      sprintf(outputstr,"无法读取TI数据\r\n");
      p+=strlen("无法读取TI数据\r\n");	
#endif
    }	
    break;
    
  case CMD_COEF:
    break;
    
  case CMD_DATE:
    time_now = Time_GetCalendarTime();
    sprintf(p, "%d-%02d-%02d %02d:%02d:%02d %s\r\n",time_now.tm_year,time_now.tm_mon/*+1*/,time_now.tm_mday,\
      time_now.tm_hour,time_now.tm_min,time_now.tm_sec,Weekchar[time_now.tm_wday]);
    p+=strlen("1982-05-24 21:13:14 Tue\r\n");
    break;
    
  case CMD_NAME:
#if LINGUA ==EN
    sprintf(p,"device name now:%s,enter your new name\r\n",DevNameStr);
    p=p+strlen("device name now:,enter your new name\r\n")+strlen(DevNameStr);
#endif
#if LINGUA ==CH
    sprintf(p,"当前装置名称为%s,请输入新名称\r\n",DevNameStr);
    p=p+strlen("当前装置名称为,请输入新名称\r\n")+strlen(DevNameStr);
#endif
    Shell_State=MODIFY_NAME;
    break;
    
  case CMD_NET:
    i=netstat(p);
    p+=i;
    break;
    
  case CMD_SOE:
    sprintf(p,"***************SOE事件记录***************\r\n");
    p+=strlen("***************SOE事件记录***************\r\n");
    
    if(0==SetCurrent.TrigSoeQueue.total)
    {
      sprintf(p,"无SOE事件记录 *_*||\r\n");
      p+=strlen("无SOE事件记录 *_*||\r\n");
    }
    else
    {
      for(i=0;i<SetCurrent.TrigSoeQueue.total;i++)
      {
        //tyh:20130312 判断当前显示的是否是最新记录,如果不是画线区分
        if(old_time > SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp)
        {
          sprintf(p, "~~~~~~~~~~");
          p+=10;
          sprintf(p, "~~~~~~~~~~");
          p+=10;
          sprintf(p, "~~~~~~~~~~");
          p+=10;
          sprintf(p, "~~~~~~~~~~");
          p+=10;
          sprintf(p, "~\r\n");
          p+=3;
        }
        
        time_now = Time_ConvUnixToCalendar(SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp);
        sprintf(p, "%4d-%02d-%02d %02d:%02d:%02d %4dms DI%02d非电量%4s\r\n",time_now.tm_year,time_now.tm_mon,time_now.tm_mday,\
          time_now.tm_hour,time_now.tm_min,time_now.tm_sec,SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].mscd,\
            SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].diseq+1,(SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].state?"动作":"返回"));
        p+=43;
        
        old_time = SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp;
      }
      
      old_time = 0;
    }
    break;
    
  case CMD_REC:
    sprintf(p,"***************ERROR LIST***************\r\n");
    p+=strlen("***************ERROR LIST***************\r\n");
    if(0==SetCurrent.ErrorQueue.total)
    {
      sprintf(p,"no error recorded *_*||\r\n");
      p+=strlen("no error recorded *_*||\r\n");
    }
    else
    {
      for(i=0;i<SetCurrent.ErrorQueue.total;i++)
      {
        //tyh:20130312 判断当前显示的是否是最新记录,如果不是画线区分
        if(old_time > SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp)
        {
          sprintf(p, "~~~~~~~~~~~~~~~~~~~~");
          p+=20;
          sprintf(p, "~~~~~~~~~~~~~~~~~~~~");
          p+=20;
          sprintf(p, "~~~~~~~~~~~~~~~~~~~~");
          p+=20;
          sprintf(p, "~~~~~~~~~~~~~~~~~~~~");
          p+=20;
          sprintf(p, "\r\n");
          p+=2;
        }        
        
        time_now = Time_ConvUnixToCalendar(SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp);
        sprintf(p, "%4d-%02d-%02d %02d:%02d:%02d %4dms %08x's Reg=|%08x|%08x|%08x|%08x|\r\n",time_now.tm_year,time_now.tm_mon/*+1*/,time_now.tm_mday,\
          time_now.tm_hour,time_now.tm_min,time_now.tm_sec,SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].mscd,\
            SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Perirh_baseaddr,\
              SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_1,\
                SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_2,\
                  SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_3,\
                    SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_4);
        p+=strlen("1982-05-24 13:14:10 1234ms 12345678's Reg=|00000400|00000003|00000401|00000124|\r\n");
        
        old_time = SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp;
      }
      
      old_time = 0;
    }
    break;
    
  case CMD_SHOWIP://20130312 TYH:添加IP显示命令处理
    break;
    
  case CMD_AI_RESET_COUNT:  //tyh:20130730
    sprintf(p,"AI RESET COUNT = %7.0f\r\n", AI_Reset_Count);
    p+=strlen("AI RESET COUNT = 1234567\r\n");
    break;
    
  default:
    break;
  }     
  
  *(p++)=0x0A;
  *(p++)=0x0D;
  
  return (p-outputstr);	
}