2016-04-19 32 views
0

Ich bin neu in der Verarbeitung und ich versuche einen einfachen Code, um einen Licht zu Frequenzwandler zu testen. Ich habe Daten über ein Arduino in einer cvs-Datei aufgezeichnet und ich versuche jetzt, Processing durch die Tabelle zu lesen und die Zeit und Frequenz pro Sekunde auszugeben (im Text). Es scheint jedoch, sie alle gleichzeitig anzuzeigen? Ich weiß nicht, was ich falsch mache, da der Code für print/println, aber nicht für den Bildschirm funktioniert. Jede Hilfe würde sehr geschätzt werden!Verarbeitungscode wird nicht aktualisiert?

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); 
    } 
} 

Antwort

0

Die text() Funktion nimmt drei Parameter: die String Sie anzeigen möchten, und die x und y Koordinaten der Position sollte angezeigt werden.

Beachten Sie, dass Sie immer die gleichen x und y Werte in die text() Funktion übergeben, so dass Sie alles in der gleichen Position Zeichnung am Ende.

Sie müssen die x und/oder y übergeben in die text() Funktion ändern. Wie Sie das tun, hängt davon ab, was genau Sie wollen. Aber Sie würden wahrscheinlich beginnen, indem die Position auf dem for-Schleife mit variabler Basis ändern:

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

Beachten Sie, dass hier bin ich zu ändern den y Wert, so dass jede Iteration der Schleife zeigt den Text 30 Pixel niedriger. Das ist nur ein Beispiel, aber die Idee ist die gleiche: Sie möchten im Laufe der Zeit verschiedene Positionen einnehmen.

Sie könnten auch etwas tun, wie nur eine Textzeile gleichzeitig anzuzeigen, vielleicht für 1 Sekunde oder so.

Hier ist ein MCVE, die Ihr Problem ohne alle Ihre persönlichen Code zeigt:

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

Da wir die one und twoStrings in der gleichen Lage sind zeichnen, wir diese:

Aber wir können die Positionen ändern, an denen wir vorbeikommen:

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

So, jetzt ziehen sie an verschiedenen Orten:

Wenn Sie weitere Fragen haben, versuchen Sie, Ihre eigenen MCVE posten, die hartcodierte Werte statt Ihrer gesamten Skizze verwendet.

+0

Danke. Ich habe den ganzen Code gepostet, da ich nicht wusste, wo das Problem lag. Ich möchte jedoch, dass der Text in derselben Zeile wie ein Zähler angezeigt wird. – mfuster