以串口查询方式接收字符串遇到的问题。
编了一个以串口查询方式接收字符串的小程序,程序需要判断这个字符串的第一个字符是不是$,如果是的话,继续接收以下的字符,直到收满全部的字符,并存储在数组里。如果不是$,继续查询。在硬件调试过程中发现,如果我只发$,程序可以收到$,但是如果我把$后边的字符也一起发送的话,数组里就没有存储任何字符(除$外)。
这是怎么会事呢?
大家先帮我分析下,我现在没有U盘,我随后把程序发上来。 brate 是4800,晶振是7.3728 while(1)
{
/*开始接收GPS数据*/
loop: USART_Receive0();
if(UDR0!=0x24){goto loop;}
gpsdata=UDR0; /*把$存起来*/
for(i=1;i<=82;i++); /*开始接收定位数据$GPGGA后边的*/
{
USART_Receive0();
gpsdata=UDR0;
}
/*数据接收结束*/
//send//
for(i1=7;i1<=45;i1++)
{
USART_Transmit1(gpsdata);
delay_ms(150);
}
PORTC=0x07; //0000,0000led on
delay_ms(300);
PORTC=0x00; //0000,0111 led off
PORTA=0x00; //0000,0000 bell_on
delay_ms(300);
PORTA=0x04; //0000,0100 bell_off
}
} .
页:
[1]