我是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);
}
}
答案 0 :(得分:0)
text()
函数有3个参数:您要显示的String
,以及应显示的位置的x
和y
坐标。
请注意,您始终将相同的x
和y
值传递到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);
由于我们在同一位置绘制了one
和two
Strings
,我们得到了这个:
但我们可以改变我们传递的位置:
background(0);
String one = "ABC";
String two = "XYZ";
text(one, 25, 25);
text(two, 25, 50);
所以现在他们在不同的地方画画:
如果您还有其他问题,请尝试发布自己使用硬编码值而不是整个草图的MCVE。