Exemple #1
0
/*通过串口将int型数据转换为ASC码发送出去*/
void USART_SendInt16(u16 num)
{
     u8 wan,qian,bai,shi,ge;
	 u8 asc_wan,asc_qian,asc_bai,asc_shi,asc_ge;
	 u8 wan_flag,qian_flag,bai_flag;

	 wan=num/10000;
	 qian=num/1000%10;
	 bai=num/100%10;
   shi=num/10%10;
	 ge=num%10;

	 asc_wan=asc_to_num(wan);
	 asc_qian=asc_to_num(qian);				
	 asc_bai=asc_to_num(bai);				
	 asc_shi=asc_to_num(shi);				
	 asc_ge=asc_to_num(ge);

	 if(asc_wan!=0x30)
	 {
	     wan_flag=1;
		 USART_SendData (USART1,asc_wan);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 }

	 if(wan_flag==1|asc_qian!=0x30)
	 {
	     qian_flag=1;
		 USART_SendData (USART1,asc_qian);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 }

	 if(qian_flag==1|asc_bai!=0x30)
	 {
	     bai_flag=1;
		 USART_SendData (USART1,asc_bai);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 }

	 if(bai_flag==1|asc_shi!=0x30)
	 {
		 USART_SendData (USART1,asc_shi);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 }


     USART_SendData (USART1,asc_ge);
	 while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 		 	
	 USART_SendData (USART1,'\r');
     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 	 
 	 USART_SendData (USART1,'\n');
     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);

	 USART_ClearFlag (USART1,USART_FLAG_TC);

}
time_t
parse_date (const char **a)
{
  const char *d = *a;
  struct tm raw_time;

  if (skip_str (&d, "Mon ") && skip_str (&d, "Tue ") && skip_str (&d, "Wed ") 
      && skip_str (&d, "Thu ") && skip_str (&d, "Fri ") 
      && skip_str (&d, "Sat ") && skip_str (&d, "Sun ")) {
    return (time_t)-1;
  }

  /* now get the month */
  if (((raw_time.tm_mon = month_to_num (d)) == -1) || (d[3] != ' ')) {
    return (time_t)-1;
  }
  d += 4;

  /* ... the day */
  if (((raw_time.tm_mday = asc_to_num (d, 2)) == -1) || (d[2] != ' ')) {
    return (time_t)-1;
  }
  d += 3;

  /* ... the hours */
  if (((raw_time.tm_hour = asc_to_num (d, 2)) == -1) || (d[2] != ':')) {
    return (time_t)-1;
  }
  d += 3;

  /* ... the minutes */
  if (((raw_time.tm_min = asc_to_num (d, 2)) == -1) || (d[2] != ':')) {
    return (time_t)-1;
  }
  d += 3;

  /* ... the seconds */
  if (((raw_time.tm_sec = asc_to_num (d, 2)) == -1) || (d[2] != ' ')) {
    return (time_t)-1;
  }
  d += 3;

  /* ... and the year */
  if (((raw_time.tm_year = asc_to_num (d, 4)) == -1)) {
    return (time_t)-1;
  }
  d += 4;
  raw_time.tm_year -= 1900;
  raw_time.tm_isdst = -1;
  
  *a = d;
  return mktime (&raw_time);
}
int
e_option (const char *days)
{
  int d = (days) ? asc_to_num (days, strlen (days)) : -1;
  
  return ((d >= 0) && (d <= 1461)) ? d : -1;
}
Exemple #4
0
/*通过串口将char型数据转换为ASC码发送出去*/
void USART_SendChar8(u8 num)
{
     u8 bai,shi,ge;
	 u8 asc_bai,asc_shi,asc_ge;

	 bai=num/100;
   shi=num/10%10;
	 ge=num%10;

	 asc_bai=asc_to_num(bai);				
	 asc_shi=asc_to_num(shi);				
	 asc_ge=asc_to_num(ge);

	 if(asc_bai!=0x30)
	 {
		 USART_SendData (USART1,asc_bai);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 }
	 if(asc_bai!=0x30|asc_shi!=0x30)
	 {
		 USART_SendData (USART1,asc_shi);
	     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);

	 }

	 USART_SendData (USART1,asc_ge);
     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);		 	

	 USART_SendData (USART1,'\r');
     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);
	 	 
 	 USART_SendData (USART1,'\n');
     while(USART_GetFlagStatus (USART1,USART_FLAG_TC)!=SET);

	 USART_ClearFlag (USART1,USART_FLAG_TC);

}
Exemple #5
0
int analysis_data(char * addr, int len, char * data)
{
	FILE * fp;
	char buff[1024];
	char addrpre[6];
	int offset;
	char * psrc;
	int i = 0;

	if (strlen(addr) != 6)
	{
		printf("bad address: %s\n", addr);
		return -1;
	}
	offset = asc_to_num(addr[5]);
	//printf ("address offset=%d\n", offset);

	strncpy(addrpre, addr, 5);
	addrpre[5] = '\0';

	fp = fopen(OBJSTRING_FILENAME, "r");
	while(fgets(buff, sizeof(buff), fp) != NULL)
	{
		if (strstr(buff, addrpre) != NULL)
			break;
	}

	if (strlen(buff) < 43)
	{
		printf("error text:%s\n", buff);
		return -1;
	}

	psrc = buff + 8 + offset*2 + offset*2/8;

	while (i < len*4)
	{
		data[i++] = '\\';
		data[i++] = 'x';
		data[i++] = *psrc++;	
		data[i++] = *psrc++;
		if (*psrc == ' ') 
			psrc++;
		if (*psrc == ' ')
		{
			if (fgets(buff, sizeof(buff), fp) == NULL)
			{
				printf("fgets error!\n");
				fclose(fp);
				return -1;
			}
			psrc = buff + 8;
		}
	}
	//data[i++] = '\0';
	//printf("Result: data=%s\n", data);

	fclose(fp);

	return 0;
}