处理代码不爽快?

时间:2016-04-19 14:55:04

标签: csv arduino processing

我是Processing的新手,我正在尝试一个简单的代码来测试光到频率转换器。我已经通过Arduino将数据记录到cvs文件中了,我现在希望让Processing读取表格并以文本形式(每周一次)发出时间和频率。 但是,它似乎只是同时显示它们?我不知道我做错了什么,因为代码适用于print / println,但不适用于屏幕。任何帮助将不胜感激!

 
Table table;
TableRow row;
int fData;
String [] frequency;
String [] time;
int index = 0;

void setup() {
  size(800, 500);
  background(255);
  table = loadTable("test2.csv", "header");
  time = table.getStringColumn(1);
  frequency = table.getStringColumn(2);

  println(table.getColumnCount() + " columns in table"); 
  println(table.getRowCount() + " rows in table"); 
  println("Date: " + table.getString(1, 0)); 
  println("Start time: " + table.getString(0, 1));
  println("Duration: " + (table.getRowCount()/60) + " minutes"); 
}

void draw () {
  background(255); 
  text("Date: "+table.getString(0, 0), 30, 340);
  text("Start time: "+ time[index], 30, 360);
  fill(0); 


  for (int i = 0; i < 1575; i = i+1) {
    fData=((table.getInt(i, 2))/1000);// alpha range 0-255
    println(fData);

    fill(0);
    text("End time: " + time[i], 30, 380);
    text("Times:["+table.getString(i, 1)+"]", 30, 420);  
    fill(255);
    rect(0, height-100, width, 100);
    fill(0);

    text("fData:["+fData+"]", 30, 440);
    float number = +table.getInt(i, 2);
    println(number);

    text("#["+number+"]", 30, 480);
  }
}

1 个答案:

答案 0 :(得分:0)

text()函数有3个参数:您要显示的String,以及应显示的位置的xy坐标。

请注意,您始终将相同的xy值传递到text()函数中,因此您最终会将所有内容绘制在同一位置。

您必须修改传递到x函数的y和/或text()。你如何做到这一点取决于你想要发生什么。但是你可能首先要根据for循环变量修改位置:

text("End time: " + time[i], 30, i*30);

请注意,我在这里更改y值,以便循环的每次迭代显示文本低30个像素。这只是一个例子,但想法是一样的:你想随着时间的推移传递不同的位置。

你也可以做一些事情,例如一次只显示一行文字,也许是1秒左右。

这是一个MCVE,可以显示您的问题而无需额外的代码:

background(0);
String one = "ABC";
String two = "XYZ";
text(one, 25, 25);
text(two, 25, 25);

由于我们在同一位置绘制了onetwo Strings,我们得到了这个:

但我们可以改变我们传递的位置:

background(0);
String one = "ABC";
String two = "XYZ";
text(one, 25, 25);
text(two, 25, 50);

所以现在他们在不同的地方画画:

如果您还有其他问题,请尝试发布自己使用硬编码值而不是整个草图的MCVE