wyb4993 发表于 2008-12-22 09:45:47

遇到奇怪的问题:10/s的采样率,串口波特率19200,LV可以实时显示波形吗?

大家好!

      我的单片机和LV的串口波特率都设置为19200,LV直接下载单片机外扩的SRAM中的数据,是可以把数据变成波形的。但是,假如单片机以10/s的采样率采集数据(即每秒采集10个数据),单片机每采集一个数据,就直接发给LV,不储存在SRAM中了。但是LV却显示不出波形来。太奇怪了?
       我在LV中做了一个字符串输入控件,是可以接收到单片机发来的数据的。既然可以收到正确的串口数据,为什么就不能实时显示波形呢?
      是不是要根据不同的采样率,在LV中设置不同的串口波特率啊?

cpubbs 发表于 2008-12-22 09:47:34

可以显示的,估计是转换的格式不对!下载我们的学习套件的资料,实验6,8里面均有关于串口数据格式转换的节点,现在可以免费下载到整套资料了,好运!

cpubbs 发表于 2008-12-22 09:48:06

我试过51的115200都没有问题的!

wyb4993 发表于 2008-12-22 09:58:50

转换的格式应该是对的呀。因为我用相同的程序:
1、LV直接下载单片机外部SRAM中的数据,可以波形显示
2、单片机每采集一个数据,直接发给LV,LV却不能波形显示

wyb4993 发表于 2008-12-22 10:10:02

我看了学习套件的资料了,非常不错,谢谢!
有一个问题:学习套件中的例子都是以串口全速(比如:波特率9600)来发送数据的,但我的单片机现在每秒才采集到10个数据,这样会不会造成速度跟不上串口波特率啊?

cpubbs 发表于 2008-12-22 10:17:22

估计兄弟误会了,论坛的也是发一个指令取一个数据的,相当于上位机发指令,下面返回,这样没关系的,和您这个一样的!

wyb4993 发表于 2008-12-22 11:33:01

惨了。
应该是和波特率高低没关系的。我已经看到有数据上来,就是不能波形显示。真郁闷。
但直接下载SRAM数据倒可以波形显示。晕倒

cpubbs 发表于 2008-12-22 11:41:18

不知道格式转换对不对呢?

wyb4993 发表于 2008-12-22 15:20:38

本帖最后由 wyb4993 于 2008-12-22 15:24 编辑

原因找到了,问题解决啦!太高兴了!!allqq-mogudiandian-32all

      因为我采用生产者/消费者模式,问题的原因就出在元素出队列的超时端。如下图:
http://www.qudoo.net/p?id=5b1fc3341e4f345e011e5d8898391c48&photo.jpg
      因为我的实时采样率为:10/s,也就是每100毫秒采集一个数据。请注意:上图中“元素出队列的超时端”我接的数据是:10毫秒。这样队列马上就会超时,消费者while循环就会结束。而我的波形显示是在消费者while循环中完成的,这就导致了没有波形显示了。
   而直接下载单片机扩展的SRAM中的数据时,是以19200/s的速度下载的。下载一个8位数据只需要0.4166毫秒,而“元素出队列的超时端”的数据是:10毫秒,这样不会超时,就有波形显示了。
   把”元素出队列的超时端”数据改为:1000毫秒,困惑已久的问题终于解决了,好开心!也有1/s的采样率的,也要注意这个超时接线端。也感谢cpubbs的老大!谢谢!

cpubbs 发表于 2008-12-22 18:22:25

原因找到了,问题解决啦!太高兴了!!allqq-mogudiandian-32all

      因为我采用生产者/消费者模式,问题的原因就出在元素出队列的超时端。如下图:
http://www.qudoo.net/p?id=5b1fc3341e4f345e011e5d8898391 ...
wyb4993 发表于 2008-12-22 15:20 http://www.cpubbs.com/bbs/images/common/back.gif

呵呵,客气了!有空常到cpubbs论坛转转,把自己的经验和朋友们共享,谢谢!
页: [1]
查看完整版本: 遇到奇怪的问题:10/s的采样率,串口波特率19200,LV可以实时显示波形吗?