wguangfu 发表于 2010-10-8 14:40:04

串口数据老出错是怎么一回事?

本帖最后由 wguangfu 于 2010-10-8 15:29 编辑

我做的一个虚拟示波器,接收的是串口数据,串口每次接收10个数,FF 99 XX XX XX XX XX XX XX XX, 当文件头为FF 99 时,才处理后面的8个数,现在的问题是,如果FF 99 后面跟的8个数是定值,那么就显示很正常,但如果FF 99后跟的数值一直在变,那么波形图显示时,就像在播幻灯片,很久才更新一次,这是为什么啦?

tomcat 发表于 2010-10-8 14:43:51

你用串口调试助手能看以会变的时候接收正确么?

tomcat 发表于 2010-10-8 14:43:58

上传程序。

wguangfu 发表于 2010-10-8 15:30:29

顶起啊

wguangfu 发表于 2010-10-8 15:31:31

回复 tomcat 的帖子


   串口看的话一切正常的啊

飞雨天 发表于 2010-10-8 17:19:47

帖子上说的是10个字节,而程序里却是15个字节?你改下然后看看,当然,程序是有问题的,不过我觉得出现问题的几率不大

chenqinghua 发表于 2010-10-8 21:55:02

问题在结束符 ,你后面变动的数字有时会等于0AH ,导致接受结束,
例如 :消息为 F9 99 0A xxxx,那样byte in port=3 ,即就接受F9 99 0A 三个BYTE ,你说后面咋可能还有其他数据,所以串口得到消息有时正常有时不正常,者取决于你下位机上传的消息中0A的数量和位置。应此建议你将其转变为ASII 吗,即如要发99 就发39 39 ,那样就会避开结束符

wguangfu 发表于 2010-10-9 10:55:46

回复 chenqinghua 的帖子

刚才我把数据为0A 的情况全部去掉,发现波形一下就对了。所以,你的观点是正确的,很感谢你以及大家的帮助,但如果改成ASCII的话好麻烦的,有没有其他方法啦?

chenqinghua 发表于 2010-10-9 21:15:59

你告诉我下,你的下位机是什么??

chenqinghua 发表于 2010-10-10 08:16:19

这个也许对你有用
http://www.embcom.net/thread-28281-1-1.html

cpubbs 发表于 2010-10-10 08:19:44

还没来得及看程序,您看一下您接收到的数据里面,有没有可能出现终止符,在精华列表贴中有一个关于接收数量会变少的那个贴子!还有数据有没有篡位!

cpubbs 发表于 2010-10-10 08:21:09

如果是篡位请看这个:
串口通信中数据篡位的彻底解决办法:队列缓冲数据!附程序!
http://www.cpubbs.com/bbs/forum.php?mod=viewthread&tid=63745&fromuid=19

cpubbs 发表于 2010-10-10 08:21:50

关于遇到终止符导致接收少了的请看这里,其中有一个贴子收录的就是!您找一下!

cpubbs论坛精华LV技巧贴,不断增加中!
http://www.cpubbs.com/bbs/forum.php?mod=viewthread&tid=13221&fromuid=19
页: [1]
查看完整版本: 串口数据老出错是怎么一回事?