初级会员
- 积分
- 136
- 金钱
- 136
- 注册时间
- 2016-2-29
- 在线时间
- 25 小时
|
1金钱
if(strstr(Uart2_Buf,"+IPD")!=NULL) //èô»o′æ×Ö·û′®ÖDo¬óD^SISR
{
Heartbeat=0; //Çå3yDÄìøÖ¡¼ÆêyÆ÷
Heart_beat=0;
Delay_nMs(100);
//UART1_SendString("êÕμ½DÂDÅÏ¢£o\r\n");
//strncpy((char *)USART2_RX_BUF,(const char *)Uart2_Buf+12,18);
//UART1_SendString(Uart2_Buf);
//UART1_SendString((char *)USART2_RX_BUF);
mid((char*)USART2_RX_BUF,(char*)Uart2_Buf,19,12);
UART1_SendString((char *)USART2_RX_BUF);
USART_SendData(USART1 ,0x0d);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
USART_SendData(USART1 ,0x0a);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
CLR_Buf2();
Heart_beat=1;//·¢Ëíó|′eêy¾Y£¬¸æËß·tÎñÆ÷êÕμ½êy¾Y
}
har *mid(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len)n=len-m;
if(m<0)m=0;
if(m>len)return NULL;
p+=m;
while(n--)*(q++)=*(p++);
*(q++)='\0';
return dst;
}
比如:服务器发送87112047870853257收到数据是8711204787085325,会将最后一位丢失。
若发送:871120478708532517,则会收到87112047870853251,总是会丢一位。
mid为字符串截取函数,因为服务器发给sim900a 的数据带有:+IPD,31:87112047870853257。但是我想去掉+IPD,31:这些字符,但是总是丢一位,就是不知道怎么回事。
望大神提点。
|
最佳答案
查看完整内容[请看2#楼]
已经搞定,是 USART_SendData(USART1 ,0x0d);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
USART_SendData(USART1 ,0x0a);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)==RESET);
CLR_Buf2();的问题
|