首先明确:接收长度不能设置为1

程序代码如下:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

if(Paral_RX_Count >= 10 )
{

      //@@@@2@@@@
  if(Paral_RX_NumByte >= 1)
  {

    //@@@@3@@@@
    WriteUart1CyBuf(Paral_RX_NumByte,ParalRcvBuf);
    Paral_RX_Count = 0;
    Paral_RX_NumByte = 0;
  }
}

当Paral_RX_NumByte >=1时,解释如下:

  没有接收数据时,Paral_RX_Count会大于10,走到@@@@2@@@@时,正好收到1个数据,这时程序就会进入@@@@3@@@@,违背程序本意。

当Paral_RX_NumByte >= 2时,就不会出现上面的情况,解释如下:

  没有接收数据时,Paral_RX_Count会大于10,走到@@@@2@@@@时,正好收到1个数据,但是Paral_RX_NumByte >= 2,不会进入@@@@3@@@@,再有数据来到时,已经将Paral_RX_Count设置为0,所以不会出现上面的情况。

因此,程序不能处理一次发送一个字节的情况。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄