打印

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

[复制链接]
3276|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

使用特权

评论回复
5
drache2009|  楼主 | 2011-7-30 23:28 | 只看该作者
楼上,谢谢你,我去查一下:)。

使用特权

评论回复
6
drache2009|  楼主 | 2011-7-31 02:55 | 只看该作者
mohanwei,谢谢,按照你的方法查过了,串口接收(捕获)是没问题的。只是 在保存的时候没有完全保存下来。1000个值只保存下来970个,当我再采1000个值保存到同一个文件时,之前缺的30个值会被加进去。这样就会保存970+30+970=1970个值。以上用的是超级终端。

后来我换了串口助手,竟然解决了问题。

使用特权

评论回复
7
mohanwei| | 2011-7-31 17:05 | 只看该作者
超级终端是字符设备,可见的给你打印出来,不可见的有一部分是控制字符……如果你的单片机刚好发出个\b,屏幕字符不仅没增加,还会给你删除……:lol

使用特权

评论回复
8
drache2009|  楼主 | 2011-7-31 22:36 | 只看该作者
mohanwei, 可以通过更改超级终端的设置让它把所有捕获到的数据保存下来么???

使用特权

评论回复
9
lolp| | 2011-8-1 12:55 | 只看该作者
我去帮你看一下

使用特权

评论回复
10
teet| | 2011-8-1 21:49 | 只看该作者
楼上有结果没

使用特权

评论回复
11
teet| | 2011-8-1 21:50 | 只看该作者
:lol

使用特权

评论回复
12
陈永宾0| | 2011-8-1 22:31 | 只看该作者
???超级终端是个什么东东呀!嘿嘿嘿 谁可以用两句话介绍一下吗??

使用特权

评论回复
13
rulu| | 2011-8-2 17:22 | 只看该作者
一两句可说不清楚的

使用特权

评论回复
14
rulu| | 2011-8-2 17:22 | 只看该作者
我给你找个相关资料

使用特权

评论回复
15
drache2009|  楼主 | 2011-8-2 18:12 | 只看该作者
本帖最后由 drache2009 于 2011-8-2 18:22 编辑

:) 我还没有结果,换了台快点的机器,还是不行。还在用串口助手。

使用特权

评论回复
16
drache2009|  楼主 | 2011-8-2 18:16 | 只看该作者
13# rulu

串口通讯(接受&发送)工具。开始->附件->通讯->超级终端。简明的连接方法,朋友,你去网上看看。

使用特权

评论回复
17
ploto| | 2011-8-6 14:20 | 只看该作者
串口工具最好用的就是accessport了。去网上下一个吧,比国产的软件好用很多。

使用特权

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

本版积分规则

0

主题

13

帖子

1

粉丝