免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4155 | 回复: 3
打印 上一主题 下一主题

串口接收数据存储后出现的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-10 16:50 |只看该作者 |倒序浏览
上位机向串口每次发送10个字节,内容是从0——150,第一次发:0x00 0x01 0x02 …… 0x09,然后第二次发:0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13,然后依次增加,直到0x95(也就是十进制的150),然后再次循环发送。
我在LINUX下编写C程序接收串口数据,也是每次收10个字节,放到一个unsigned char的数组中,然后将这10个字节存储到文件中。
接收一段时间后,我打开文件查看接收内容,发现有个问题:
直接用vim打开,发现第一行是空行,从第二行才开始有内容,由于是十六进制的内容,显示出来就都是乱七八糟的符号了。
然后我输入命令,以十六进制显示,发现第一行是从0x0A开始显示,依次向后,但是前面的0x00 0x01 …… 0x09不见了,真是奇怪了。
我继续向后面看,发现后面没有这种问题,到0x95(十进制150)后,后面紧跟着就是00 01 02 03 04 05 06 07 08 09 0A……,也就是说只有第一次收到的10个字节丢掉了,不知道怎么回事。
有可能是因为十六进制的0A表示换行,但是为什么后面的都正常呢?而且即使有换行,第一次收到的10个字节的数据也没有道理丢失啊?郁闷中。

abc.jpg (103.94 KB, 下载次数: 34)

abc.jpg

论坛徽章:
0
2 [报告]
发表于 2009-12-10 17:08 |只看该作者
确实奇怪,要不你每次写完之后fflush一下你的文件句柄看看?
或者,写完第一组数据之后,就停止程序看看文件是否被建立了?

不过,在这之前,你可以先看一下你的数组,第一组数据到底接收了没有?

[ 本帖最后由 松饼熊 于 2009-12-10 17:15 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-12-10 17:29 |只看该作者

回复 #1 xuyaosong 的帖子

不懂,帮顶。

论坛徽章:
0
4 [报告]
发表于 2009-12-10 17:48 |只看该作者
谢谢。
我每次收到一组数据后,有一个变量加1,从变量上看,我确实都收到了,但是总是丢掉第一组,郁闷
楼上的建议非常好,我可以先printf看看是不是收到了,谢谢,我估计是收到了,应该是保存的问题,或者是特殊字符的问题,还是……,混乱。我回头做下测试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP