免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ljwilliam

[驱动] 串口接收GPS模块发送的信息,接收上丢失数据 [复制链接]

论坛徽章:
0
发表于 2010-11-22 09:52 |显示全部楼层
回复 87# EZWORD


    硬件的流控制是否只是需要设定相应的标志位就可以了,然后有对应的条件满足了,管脚会自动发送信息,提示发送端停止发送?
   软件流控的话,是要我们修改内核的串口代码?

论坛徽章:
0
发表于 2010-11-22 09:59 |显示全部楼层
硬件流控需要有相应的管脚支持,既接收端的cts和对端(gps)的rts,这是必要的硬件引脚。
软件流控是通过应用层设置就可以了,内核中是支持的,不知道你的gps行不行。

论坛徽章:
0
发表于 2010-11-22 10:04 |显示全部楼层
回复 89# yikaikai


    但是,我这里的问题是,从硬件的FIFO寄存器读到的信息被overrun了,相应的标志位被置位了,该是数据丢失了
   加上校验是能确定收到的信息是否完整。加上之后数据还是会丢失,加了校验只能是抛弃不正确的数据把,不能改变收到数据丢失的状况把?还望更多的指点

论坛徽章:
0
发表于 2010-11-22 10:09 |显示全部楼层
回复 92# EZWORD


    也就是说软件流控的话,只需要设定XON/XOFF为打开就可以了,是吧?这个我试过,没啥反应。。。。。。。
   硬件流控的话,我看我这里也就一个收和一个发,没别的管脚了。。。我也在上层改变过串口的那些c_cflag的设置,没有用。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-11-22 12:40 |显示全部楼层
回复 94# ljwilliam


    看来只能依耐软流控,应该就是把标志为设置下.让它自己在FIFO满的时候 自动 发送控制字.如果不起作用.你应该和GPS那方取得联系确认他们时候支持软流控,并把问题提交给他们让他们协助解决.

论坛徽章:
0
发表于 2010-11-22 15:55 |显示全部楼层
回复 95# smalloc


    实际上只需要设置termios里面的为硬件流控制或者软件流控制就可以了。
   我试了下,另外一批板子里面有管脚和模块相连接,可以使用硬件流控制,只是设置了一下c_cflag |= CRTSCTS,丢失的现象就好了些。当然也不是说绝对没有这个情况了。
   那么软件流控制的话也是这样设置,只是实现的时候,是通过发送某些字符,来告之收发端
   我想问的是,是不是这两个流控制也无法绝对的能保证不会导致overrun?因为从我这里来看的话,虽然问题数据出来的状况好了一些,但是还是有丢数的。

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2010-11-22 16:33 |显示全部楼层
本帖最后由 smalloc 于 2010-11-22 16:45 编辑

回复 96# ljwilliam


    如果有流控,应该不会发生overrun ,而只是数据出错.如果硬件不重传或者不丢失错误数据.接受的字节数就不会变少,顶多出错
如果有出错应该在上层软件实现重发机制,直到拿到正确的数据为止.

如果有流控还发生overrun 那么可能
overrun意义弄错了. 或者发送方不支持流控

如果有流控而且不overrun数据总有出错.那么硬件真不行.只能上层软件确保重复传输

如果这2点确认. 而GPS提供者没有给出解决方案, 可以PK他了

论坛徽章:
0
发表于 2010-11-22 19:48 |显示全部楼层
The sending device (e.g. another UART) may send an additional byte after the trigger level is reached because it may not recognize the de-assertion of RTS until it has begun sending the additional byte.

论坛徽章:
0
发表于 2010-11-22 19:52 |显示全部楼层
回复 98# EZWORD


    指的是软流控?

论坛徽章:
0
发表于 2010-11-22 20:03 |显示全部楼层
Hardware flow control
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP