Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341925
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:03:38

单片机程序片段1:(C51)
for(i=0;i{
     if(i > 0 && i < chRecCounter-1)     //首尾字节是接收到的起始和结束字符,不作处理;只对数据部分作处理
     {
         if(arrRecBuf[i] == STX || arrRecBuf[i] == ETX)   //STX,ETX是帧头和帧尾
         {
              arrSendBuf[j] =  CtrlChar;
              j++;
         }
     }
     arrSendBuf[j] = arrRecBuf[i];
     j++;
}
for(i=0;i{
     SBUF = arrSendBuf[i];
     while(TI == 0)
     {
     }
     TI = 0;
}
这段程序经测试没有问题.

单片机程序片段2:
for(i=0;i{
     if(i > 0 && i < chRecCounter-1)
     {    
          if(arrRecBuf[i] == STX || arrRecBuf[i] == ETX)
          {
               SBUF = CtrlChar;     //插入控制字符
               while(TI == 0)
               {
               }
               TI = 0;
          }
     }
     SBUF = arrRecBuf[i];
     while(TI == 0)
     {
     }
     TI = 0;
}
这段程序得不到希望的结果,PC机总是显示一个多余的帧尾字符。(利用串口调试助手没有这个问题)。

我能想到的区别是一帧数据里每个字符之间的间隔可能会不同(片段1是相同的,而2不相同),难道这会有影响吗?那用串口调试助手又该如何解释呢?
版主,一定要救我呀!谢谢!


--------------------next---------------------

阅读(1114) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~