[mw_shl_code=c,true]if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(UART4, USART_IT_RXNE);
Receive[bufferRx]=USART_ReceiveData(UART4);
USART_SendData(UART5,Receive[bufferRx]); //缓存COM4中断接收的数据
bufferRx++;
{
/************************先比对DW对应的unicode: 0043和0057结尾430057, 比对成功后,设置第一个标志位buffterTx1**************************************/
if((Receive[bufferRx-6]==0x34)&&(Receive[bufferRx-5]==0x34)&&(Receive[bufferRx-4]==0x30)&&(Receive[bufferRx-3]==0x30)&&(Receive[bufferRx-2]==0x35)&&(Receive[bufferRx-1]==0x37))
{
bufferTx1=bufferRx-1;
bufferTx2=bufferTx1;
}
/************************从标志位开始430057开始到#结束FF03中间的数据,就是我们需要提取的数据******************************************************/
if((Receive[bufferTx1]==0x37)&&(Receive[bufferRx-4]==0x46)&&(Receive[bufferRx-3]==0x46)&&(Receive[bufferRx-2]==0x30)&&(Receive[bufferRx-1]==0x33)) //这两个中间的就是字符串
{
bufferLen=bufferRx-1-bufferTx1;
USART_Printf(UART5,"\r\n") ;
/**************************************************************************把需要的数据打印出来************************************************************************/
for(i=0;i<bufferLen;i++,bufferTx1++)
USART_SendData(UART5, Receive[bufferTx1+1]);
for(i=0;i<bufferLen;i++,bufferTx2++)
stringstore=Receive[bufferTx2+1];
/**************************************************************************把打印过的数据保存在数组中************************************************************************/
USART_Printf(UART5,stringstore) ;[/mw_shl_code]
出现的问题是,直接打印,数据是我需要的数据,是对的。
保存在数组中以后,再打印出来,就少一段。
程序我没找出来任何问题。
循环次数i,我打印出来,也是对的,也就是说在存储的时候,也是次数循环够了,但是数组里面存储的信息,就是不对。。。。。。我把整个大的Receive[]数组里面的数据全部打印出来,数据信息也是对。。。
那问题就出在我存储数据那里了。。但是存储数据,就一行程序。。完全搞不明白了。 |