打印

关于串口通信包头的校验

[复制链接]
2012|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aimie|  楼主 | 2013-8-9 00:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下这段代码验证包头| 长度|和值   对和值理解不是很清楚,另外测试的时候也很麻烦,我就把这段校验去掉了,但是无论我怎么调试,好像都是不能得到正确的数据,但是如果我把revbuff[RevPtr++]=SBUF;
放到这段代码的前面忽略校验,是可以得到我发送的数据的

请问各位这个问题出在哪里
switch(RevState)
      {
    //等待接收第一个同步头0xAA
      case  revhead1:
           if (SBUF==0xAA)
           {
            RevState=revhead2;
           }
           break;
   
     //等待接收第二个同步头0x55
       case  revhead2:
           if (SBUF==0x55)
           {
            RevState=revpakagelen;
           }
           else
           {
             RevState=revhead1;//状态机复位
           }
           break;
   
    //等待接收数据包长度
       case  revpakagelen:      
           revlen=SBUF;
           if (revlen>revbufflen)
           {
             RevState=revhead1;//状态机复位               
           }
           else
           {
//               checkSum+=SBUF;
               RevPtr=0;  //接收指针复位
               reved=0; //准备接收数据      
               RevState=revpakage;
           }
           break;
   
     //等待接收数据内容
       case revpakage:     
          revbuff[RevPtr++]=SBUF;
//         checkSum+=SBUF;
          if (RevPtr==revlen)
          {
           RevState=revcrc;   
          }
//          break;
   
/*   //等待接收校验和
       case revcrc:
           if(checkSum==SBUF)
           {
             revok=1;//接收正确
           }
           else
           {
             revok=0;//接收正确
           } */
                   revok=1;
           reved=1;//接收到数据
           RevState=revhead1;//状态机复位                    
      }

相关帖子

沙发
aimie|  楼主 | 2013-8-9 09:15 | 只看该作者
前辈们看到了  帮忙解答下

就以上代码 我在电脑上
发送
aa 55 03 3f 66 7f
包头|包头|长度|3个数据

这样发送是正确的吧?

使用特权

评论回复
板凳
aimie|  楼主 | 2013-8-9 09:26 | 只看该作者
问题解决了,怪自己不够细心,坑爹啊,为此浪费 了好多时间

下面代码调整的时候继续跳到和验证去了

//等待接收数据内容

40.       case revpakage:     

41.          revbuff[RevPtr++]=SBUF;

42.//         checkSum+=SBUF;

43.          if (RevPtr==revlen)

44.          {

45.           RevState=revcrc;   
46.          }

47.//          break;

使用特权

评论回复
地板
dirtwillfly| | 2013-8-9 11:33 | 只看该作者
aimie 发表于 2013-8-9 09:26
问题解决了,怪自己不够细心,坑爹啊,为此浪费 了好多时间

下面代码调整的时候继续跳到和验证去了

很赞

使用特权

评论回复
5
上官紫虞| | 2014-10-13 13:56 | 只看该作者
楼主,请问一下我如果要在接收端去掉包头,该如何去啊?

使用特权

评论回复
6
coody| | 2014-10-13 17:49 | 只看该作者
这种格式,我就定3个:包头、包尾、转义字符。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

123

帖子

2

粉丝