/*通过串口将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; }
/*通过串口将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); }
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; }