打印

串口通讯偶尔有二次接收

[复制链接]
2926|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuoulyy|  楼主 | 2012-12-13 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
串口通讯发送一组数据,大傻串口助手有二次接收
串口通讯发送一组数据,大傻串口助手偶尔有二次接收,问下大侠,这是什么原因引起的?
正常接收:
[2012:12:12:21:27:56][发送]FE FE FE 50 01 00 51
[2012:12:12:21:27:56][接收]FE FE FE 50 01 0D E7 FD FD FD FD FD ED FD FD FD FD FD 3C 6A
分二次接收但数据一样:
[2012:12:12:21:27:56][发送]FE FE FE 50 01 00 51
[2012:12:12:21:27:56][接收]FE FE FE 50 01 0D E7 FD FD FD FD
2012:12:12:21:27:56][接收] FD ED FD FD FD FD FD 3C 6A

相关帖子

沙发
阿南| | 2012-12-13 15:50 | 只看该作者
我觉得是大傻串口助手的原因可能性大些,所以建议换个串口调试助手试试。
另外,确定你发送是否有被中断,还是连续发送的,如果有被中断,那么大傻分二次接收也有可能

使用特权

评论回复
板凳
jlass| | 2012-12-13 16:07 | 只看该作者
发慢点看看,会不会是缓冲满了,自动分成两条了
另外:我觉得这也没关系啊,又没有多数据,手动拼一下就好了

使用特权

评论回复
地板
liuoulyy|  楼主 | 2012-12-13 16:17 | 只看该作者
我把其它中断关了,但找不到有时间记录的串口助手,因为其它的串口助手显示是正常的(没有时间记录嘛,也没换行)。???

使用特权

评论回复
5
jlass| | 2012-12-13 16:31 | 只看该作者
那问题还不明显吗,就是串口助手的显示问题啊

使用特权

评论回复
6
liuoulyy|  楼主 | 2012-12-13 17:01 | 只看该作者
那其它同事也用这个大傻助手,没有这种现相。其它助手没有显示接收帧的次数,虽然没有换行,但说明不了两次接收的问题。
上位机程序是另外同事写的,偶尔也有通讯失败现相。

使用特权

评论回复
7
liuoulyy|  楼主 | 2012-12-13 17:04 | 只看该作者
接收二次,上位机作二次处理就可能出问题,特别是在字长前断开。

使用特权

评论回复
8
阿南| | 2012-12-13 17:10 | 只看该作者
别人用和你用的环境不一定完全一样,所以你的这种现象把这个串口助手的问题给搞出来了,强烈要求你们写该串口调试助手的同事配合找问题。

使用特权

评论回复
9
jlass| | 2012-12-13 17:17 | 只看该作者
本帖最后由 jlass 于 2012-12-13 17:25 编辑

明白了,你的上位机的数据是不是一起往下写的,这样容易造成缓冲满了,可以放慢写的速度看看。对了,转成16进制看看原始数据,如果原始数据都不一样那就直接查另一端的问题吧

使用特权

评论回复
10
liuoulyy|  楼主 | 2012-12-13 17:35 | 只看该作者
接收只这几个字节,接收和发送之间有30MS间隔,再长些也没用,还是有时出现这种现相,大概100次有4次这种现相。波特率也不高。

使用特权

评论回复
11
liuoulyy|  楼主 | 2012-12-13 21:21 | 只看该作者
波特率在14400时,120次只出现一次。波特率高些,出现二次接受的次数要少些,不知何原因?

使用特权

评论回复
12
elec921| | 2012-12-14 08:38 | 只看该作者
大傻。。。。
还是多试验试验,做做排除法吧

使用特权

评论回复
13
jlass| | 2012-12-14 09:00 | 只看该作者
波特率在14400时,120次只出现一次。波特率高些,出现二次接受的次数要少些,不知何原因?


这不就说明了上位机写的太快了,缓冲满了吗?
如果有条件的话,建议使用逻辑分析仪捕捉TX与RX的数据,可以有效的帮助你解决问题。

使用特权

评论回复
14
ljl457| | 2012-12-14 09:07 | 只看该作者
这样调试基本上是没什么问题的。我也经常出现这种情况,不过对功能没什么影响。

使用特权

评论回复
15
zf_015820| | 2012-12-14 10:49 | 只看该作者
应该是串口接收时,电脑处理时,自动将数据分段显示了;你可以定义数据发送与接收,分与一桢桢数据,来处理,就不会有你说的现象了

使用特权

评论回复
16
bald| | 2012-12-14 11:01 | 只看该作者
应该是显示没有同步控制,每次调度显示进程后缓冲区里有什么就显示什么。
如果每次分断的位置不一样则很大可能就是这一原因。
把数据包加长试试,可能分断的频率会增加。

使用特权

评论回复
17
21ID| | 2012-12-14 12:26 | 只看该作者
是串口调试助手的问题

使用特权

评论回复
18
江枫渔火| | 2012-12-14 12:34 | 只看该作者
有的串口软件采用中断的接收方式,中断条件为收到1个字节就中断,有的是收到n个字节才中断~期间可能产生形似多次接收的情况~只要数据是对的就没问题,只是显示问题。

使用特权

评论回复
19
liuoulyy|  楼主 | 2012-12-14 19:41 | 只看该作者
zf_015820 发表于 2012-12-14 10:49:31 |只看该作者 |返回版面 点评回复 .应该是串口接收时,电脑处理时,自动将数据分段显示了;你可以定义数据发送与接收,分与一桢桢数据,来处理,就不会有你说的现象了

  ” 定义数据发送与接收,分与一桢桢数据,来处理,就不会有你说的现象了“ 大侠,这句话怎样理解?接收第一个字节就是定义长度吗?



使用特权

评论回复
20
liuoulyy|  楼主 | 2012-12-14 21:18 | 只看该作者
搞上位机的同事,问我接收二次么样对接上?除非第一个字节是字长,不然不好接上。还有其他的方法吗?

使用特权

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

本版积分规则

134

主题

469

帖子

1

粉丝