STM32 串口发2000个数据只得到1950???

[复制链接]
4285|16
 楼主| drache2009 发表于 2011-7-30 22:49 | 显示全部楼层 |阅读模式
大家好。
我把采集到的数据用中断写到 Buffer中,再通过串口发到 PC, 数据一大,比如超过1000 就不可以都通过串口得到。
比如。
1000 得到 987
2000得到1950
5000得到4951 左右。
我试过提高串口比特率,无果。
有没有人遇到过这样的情况,可以给我个提示么。谢谢!!!:)
 楼主| drache2009 发表于 2011-7-30 22:54 | 显示全部楼层
安我的理解,Buffer是不会出错的,2000个数据就应该会写入2000个。丢的话就是在串口传输过程中了,可是丢数据的原理在哪里呢???
 楼主| drache2009 发表于 2011-7-30 23:11 | 显示全部楼层
我也很想知道是那些数据丢失了: 是在Buffer中随机的丢的,还是排在后边Buffer后边的几位几十位。如果是后者,我倒是可以把Buffer设大点,然后去我想要的那段数据。
请大家不吝赐教!!:(
mohanwei 发表于 2011-7-30 23:22 | 显示全部楼层
贴代码……

一个简单的方法:
u8 test_buf[1000];
for(i=0;i<sizeof(test_buf);i++)
{
       test_buf[i] = i;
}
然后把test_buf发送出去……在串口助手接收窗看在哪里丢数了。正常应该是 00 01 02……FF 00 01……FF 00 01……FF 00 01……FF
 楼主| drache2009 发表于 2011-7-30 23:28 | 显示全部楼层
楼上,谢谢你,我去查一下:)。
 楼主| drache2009 发表于 2011-7-31 02:55 | 显示全部楼层
mohanwei,谢谢,按照你的方法查过了,串口接收(捕获)是没问题的。只是 在保存的时候没有完全保存下来。1000个值只保存下来970个,当我再采1000个值保存到同一个文件时,之前缺的30个值会被加进去。这样就会保存970+30+970=1970个值。以上用的是超级终端。

后来我换了串口助手,竟然解决了问题。
mohanwei 发表于 2011-7-31 17:05 | 显示全部楼层
超级终端是字符设备,可见的给你打印出来,不可见的有一部分是控制字符……如果你的单片机刚好发出个\b,屏幕字符不仅没增加,还会给你删除……:lol
 楼主| drache2009 发表于 2011-7-31 22:36 | 显示全部楼层
mohanwei, 可以通过更改超级终端的设置让它把所有捕获到的数据保存下来么???
lolp 发表于 2011-8-1 12:55 | 显示全部楼层
我去帮你看一下
teet 发表于 2011-8-1 21:49 | 显示全部楼层
楼上有结果没
teet 发表于 2011-8-1 21:50 | 显示全部楼层
陈永宾0 发表于 2011-8-1 22:31 | 显示全部楼层
???超级终端是个什么东东呀!嘿嘿嘿 谁可以用两句话介绍一下吗??
rulu 发表于 2011-8-2 17:22 | 显示全部楼层
一两句可说不清楚的
rulu 发表于 2011-8-2 17:22 | 显示全部楼层
我给你找个相关资料
 楼主| drache2009 发表于 2011-8-2 18:12 | 显示全部楼层
本帖最后由 drache2009 于 2011-8-2 18:22 编辑

:) 我还没有结果,换了台快点的机器,还是不行。还在用串口助手。
 楼主| drache2009 发表于 2011-8-2 18:16 | 显示全部楼层
13# rulu

串口通讯(接受&发送)工具。开始->附件->通讯->超级终端。简明的连接方法,朋友,你去网上看看。
ploto 发表于 2011-8-6 14:20 | 显示全部楼层
串口工具最好用的就是accessport了。去网上下一个吧,比国产的软件好用很多。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

13

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部