上图是发送的数据和板子接收到的数据并重新发送给PC端的结果。 连续多次输入多个数据的时候只有第一次输入的数据后结果是正确的之后几次都是出现不理想的结果,请各位帮忙分析分析怎么解决,谢谢
while(1)
{
memset(MsgBuf, 0x00, sizeof(MsgBuf));清空数组MsgBuf
USART_GetCharacter(USART1); 读取端口的数据
rxSize = GetRxBufSize(&CommBufUart1);记录输入的数据的个数
GetDataRxBuf(&CommBufUart1, (char *)&MsgBuf, rxSize);将数据存到接收缓冲中
if(rxSize > 4)//如果接收的数据为5个的话一次性由端口输出这五个数据,并且FlushRxBuf清空接收缓冲区和FlushTxBuf输出缓冲区
{
PutDataTxBuf(&CommBufUart1, (char *)&MsgBuf, rxSize);
memset(MsgBuf, 0x00, sizeof(MsgBuf));
FlushRxBuf(&CommBufUart1);
if(CheckTxBuf(&CommBufUart1))
{
while(CheckTxBuf(&CommBufUart1))
{
temp_char = GetCharTxBuf(&CommBufUart1);
USART_SendData(USART1,temp_char);
while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET);
}
FlushRxBuf(&CommBufUart1);
FlushTxBuf(&CommBufUart1);
}
}
if ( rxSize > 4 && rxSize < 10)//每次输入的数据可能多余5个多余的数据,如果个数不足5个就删除不显示
{
FlushRxBuf(&CommBufUart1);
FlushTxBuf(&CommBufUart1);
memset(MsgBuf, 0x00, sizeof(MsgBuf));
}
if(rxSize > 10)
{
rxSize=0;
memset(MsgBuf, 0x00, sizeof(MsgBuf));
}
}
|