zoukankan      html  css  js  c++  java
  • 关于程序中以时间判断接收数据结束时,接收数据长度设置为1时,出现接收不全的问题解释。

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

    程序代码如下:

    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,所以不会出现上面的情况。

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

  • 相关阅读:
    linux ipsec
    inotify+rsync
    多实例tomcat
    Http和Nginx反代至Tomcat(LNMT、LAMT)
    cisco ipsec
    ansible基础
    Qt 汉字乱码
    Model/View
    面对焦虑
    QT中QWidget、QDialog及QMainWindow的区别
  • 原文地址:https://www.cnblogs.com/zzq888/p/10830049.html
Copyright © 2011-2022 走看看