我用串口调试软件试了一下,如果在最后连发两个帧尾字符(0x03 0x03),也出现了同样的问题。
可能是我在单片机接收程序中,是判如果收到帧尾字符(0x03),就置接收结束标志,单片机主程序判结束标志有效就返回收到的字符串。
如果是连发两个0x03就会造成这种问题,即,当收到第一个Ox03,认为一帧数据已经收到,单片机主程序会反送收到的值;问题是单片机的串口还是会将第2个0x03接收下来,并产生中断,而单片机程序认为既然收到0x03,就是一帧数据结束,并将0x03放入接收缓冲区,这样接收缓冲区中实际保存的是第一帧数据(0x03是最后一个字符)+0x03.这样在反送的时候,会将第一个0x03加控制字符进行处理,而将第二个0x03认为是帧尾字符,这样串口控件就会认为收到了一个0x03.如果主程序的查询时间控制不好的话,就会出现上述问题。
请问,为什么一定送两个帧尾字符呢?
--------------------next---------------------
阅读(895) | 评论(0) | 转发(0) |