免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: ljwilliam
打印 上一主题 下一主题

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

论坛徽章:
0
41 [报告]
发表于 2010-11-17 21:28 |只看该作者
回复 39# smalloc


    好的我去试试看,cat重定向到文件试试看,看看结果。。。。。不知道大侠有没有更多的指点

  我试过改小系统的触发门限到1字节读取,但是效果好像不是很明显,总之就是还是有丢失的。另外,这个overrun的标志,是我在内核添加printk打印出来的,但是这里有个问题就是。当我加入了printk打印内核里面接收到的信息时,随着打印东西的增多(比如不仅打印收到的字节,也打印那些状态位,比如overrun),cat到的数据反而大量的不显示了,虽然cat到的字节和内核里面打印出来的字节是一一对应的。所以我也不敢保证这个overun指示的是GPS模块数据的overrun状态。现在在想试试看,不在内核打印,而是将这些数据保存到文件中(感谢提点,应用层cat到文件,内核也这样),看看会是什么情况。
  不过顺带也问下,为什么会这样?

论坛徽章:
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
42 [报告]
发表于 2010-11-17 21:39 |只看该作者
回复 41# ljwilliam


    我不懂窜口.不过你这帖引发了我对窜口的兴趣...
上面你的提问我也无法回答.不过只是根据你的帖子描述给的点建议
而且我曾经在网络测试数据流量时没受到一个包就打印一句话.结果是流量变的狂低
于是现在才猜想到print到终端可能导致一个关闭中断的操作.而且会关闭比较长时间
如果真是这样.那么门限改成1后仍然面临不能及时去数据的情形.导致overrun
所以改一可能在不print后才见效

论坛徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龙
日期:2014-09-07 07:46:06
43 [报告]
发表于 2010-11-18 07:44 |只看该作者
本帖最后由 damcool 于 2010-11-18 08:14 编辑
回复  damcool


    不知道您说的丢弃是不是我这里说的,一条信息里面的一部分数据丢失了,还是如果最 ...
ljwilliam 发表于 2010-11-17 21:01



    理论上来说,在足够大的硬件缓存的前提下,足够快的频度读取,能读到所有信息。但实际处理过程中,会出现信息丢失,导致读取的语句不完整,这些不完整的语句就需要通过*号后的数字-校验码-来识别,并将不完整的整条语句丢弃。而且在实际应用中丢弃的数据不影响精度需求,前提是读取频度选取合适。

论坛徽章:
0
44 [报告]
发表于 2010-11-18 09:12 |只看该作者
回复 43# damcool


    好吧,如果是整条语句的丢弃的话,显然和我这里的情况是不同的了。而且,整条语句的丢弃该是某些控制方式或者是判断信息的时候引起的把?但是串口貌似没有这个功能,应该是上层程序判断数据是否完整,然后丢弃的吧。
  我这里是收到的时候,显示出来,发现少了数据,也就是在判断数据信息之前的。

论坛徽章:
0
45 [报告]
发表于 2010-11-18 09:21 |只看该作者
回复 42# smalloc


    的确,因为每次我增加printk在内核打印的内容的时候,cat到的数据就狂减少,应该是您说的问题。
   但是,如果不在中断打印的话,只有将数据重新定向到文件才行。具体我还要试试看。

论坛徽章:
2
白羊座
日期:2013-11-18 19:52:42辰龙
日期:2014-09-07 07:46:06
46 [报告]
发表于 2010-11-18 09:28 |只看该作者
回复  damcool


    好吧,如果是整条语句的丢弃的话,显然和我这里的情况是不同的了。而且,整条语句 ...
ljwilliam 发表于 2010-11-18 09:12



    哦,我了解你的意思了,你是要验证你的串口控制器是否正常读取并存放了NMEA数据是吧,那我建议不要用cat检验,用你写c读取代码,并输出,这样检验比较好。另外你提到仅有/dev/ttyS3出现问题,看看/dev/ttyS3的缓存大小、读取频度是否和其它的一致,包括软硬件设置。如果没有差别,可以断定串口控制器硬件问题。另外不建议修改printk

论坛徽章:
0
47 [报告]
发表于 2010-11-18 09:44 |只看该作者
线路规程中缓存放大试试了没,比如直接放到2k,4k?

论坛徽章:
0
48 [报告]
发表于 2010-11-18 10:05 |只看该作者
回复  ljwilliam


    我不懂窜口.不过你这帖引发了我对窜口的兴趣...
上面你的提问我也无法回答.不过 ...
smalloc 发表于 2010-11-17 21:39



    要不一起研究下,哈哈。。。

论坛徽章:
0
49 [报告]
发表于 2010-11-18 11:16 |只看该作者
回复 47# EZWORD


    线路规程的环形缓冲,比我改的那个TTY_FLIP_BUFFER在更上层,对吧。那个的确没有试过,不过我感觉,既然TTY_FLIP_BUFFER没用的话,那个线路规程的估计也用处不大。。。。

论坛徽章:
0
50 [报告]
发表于 2010-11-18 11:22 |只看该作者
回复 46# damcool


    我之前说别的口没有问题是我没有仔细的去测试别的口。别的串口接GPS模块的时候也会有丢失的现象。
  我用read函数在应用层读取串口信息的时候,和内核,8250处打印出来的信息是一一对应的,但是两者都有很大的数据丢失。
  串口ttyS3的缓冲指的应该是串口的硬件缓冲吧,没有软件的缓冲吧? 只有只有TTY_FLIPBUF_SIZE 和线路规程的唤醒缓冲器的buffer了吧。
  读取的频率是指的内核里面,串口的定时器的时间设置嘛?
  这几个口的配置都是一样的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP