极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15594|回复: 7

怎样动态绘制数据曲线?

[复制链接]
发表于 2013-1-9 06:34:01 | 显示全部楼层 |阅读模式
大家好!经过一段时间的学习,初步掌握了arduino和processing的应用,目前碰到的问题是:

(1)我从串口传来一组数据,想把它绘制成时间历程曲线,由于同时还有绘图,所以draw函数写成了如下的样子:

[pre lang="processing" line="1"]void draw() {
  // Reset scene
  background(0);
  lights();
  
  plotCurves();
  
  output();
}[/code]

plotCurves函数:

[pre lang="processing" line="1"]void plotCurves(){
  stroke(255,0,0);
  strokeWeight(2);
  line(xPos,previousData[0],xPos+1,currentData[0]);
  
  if(xPos>=width){
    xPos=0;
  }
  else
  {
    xPos++;
  }
  
}[/code]


这样会导致之前绘制的线段会被background这句覆盖掉,从而只显示一个跳动的点。


困扰我两天了,请问有什么好办法啊?谢谢
回复

使用道具 举报

发表于 2013-1-9 12:45:40 | 显示全部楼层
建一个数组(例如存放100个数据)
当串口接收到一个数据,把第99个数据移到第100,98移到99.......第1个数据移到第2个
把新接收到的数据放第一个
把这100个数据输出
就是一条曲线
回复 支持 反对

使用道具 举报

发表于 2013-1-9 20:31:51 | 显示全部楼层
background放setup里面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-12 17:45:13 | 显示全部楼层
tyxiang 发表于 2013-1-9 20:31
background放setup里面

这样绘图不能清除背景。出现类似拖影的情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-1-12 17:47:59 | 显示全部楼层
bacon6581 发表于 2013-1-9 12:45
建一个数组(例如存放100个数据)
当串口接收到一个数据,把第99个数据移到第100,98移到99.......第1个数据 ...

我知道如果不刷新背景的话,processing是可以直接实现绘图的,问题是我同时绘制其他动画时需要刷新背景,所以导致数据图不能暂留在屏幕上。
回复 支持 反对

使用道具 举报

发表于 2013-1-23 09:36:58 | 显示全部楼层
本帖最后由 tyxiang 于 2013-1-23 09:41 编辑
mechart 发表于 2013-1-12 17:47
我知道如果不刷新背景的话,processing是可以直接实现绘图的,问题是我同时绘制其他动画时需要刷新背景, ...


如果你要刷新背景,那就必须每次画所有的点。

数据量大吗?数据量不大按照bacon6581的思路应该没问题。数据量大的话,就按照屏幕宽度开一个固定数量的数组,然后每进来一个新数就丢掉第一个,所有数往前推,新数放最后一个,然后绘图。
回复 支持 反对

使用道具 举报

发表于 2013-4-14 20:32:19 | 显示全部楼层
楼主大人,你的全部代码方便贴一下么?刚入门想找资料学习,现在资料很少啊
求你的代码,错的也行。呵呵~~~
好多绘图函数啥的都不会用,E文太差。谢谢!
回复 支持 反对

使用道具 举报

发表于 2013-9-5 09:56:29 | 显示全部楼层
darkorigin 发表于 2013-4-14 20:32
楼主大人,你的全部代码方便贴一下么?刚入门想找资料学习,现在资料很少啊
求你的代码,错的也行。呵呵~~ ...

你好,你对tyxiang的问题解决了么?我现在也是在processing上面画三条曲线,然后也是动态的。现在画了好多次都没成功!!求大神帮忙!!thx

“将数据量大吗?数据量不大按照bacon6581的思路应该没问题。数据量大的话,就按照屏幕宽度开一个固定数量的数组,然后每进来一个新数就丢掉第一个,所有数往前推,新数放最后一个,然后绘图“。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 18:28 , Processed in 0.039512 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表