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

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:03:38

我用串口调试软件试了一下,如果在最后连发两个帧尾字符(0x03 0x03),也出现了同样的问题。

可能是我在单片机接收程序中,是判如果收到帧尾字符(0x03),就置接收结束标志,单片机主程序判结束标志有效就返回收到的字符串。

如果是连发两个0x03就会造成这种问题,即,当收到第一个Ox03,认为一帧数据已经收到,单片机主程序会反送收到的值;问题是单片机的串口还是会将第2个0x03接收下来,并产生中断,而单片机程序认为既然收到0x03,就是一帧数据结束,并将0x03放入接收缓冲区,这样接收缓冲区中实际保存的是第一帧数据(0x03是最后一个字符)+0x03.这样在反送的时候,会将第一个0x03加控制字符进行处理,而将第二个0x03认为是帧尾字符,这样串口控件就会认为收到了一个0x03.如果主程序的查询时间控制不好的话,就会出现上述问题。

请问,为什么一定送两个帧尾字符呢?


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

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