import processing.serial.*;


// const

String comPort = "COM4";
int BUFFER_SIZE = 100;



// var

PFont Font;
Serial myPort;
char buffer[] = new char [BUFFER_SIZE];
int cBuffer = 0;




// setup

void setup() {

        //
        size(640, 360, P3D);
        noStroke();
        // Font
        Font = loadFont("Verdana-48.vlw");
        textFont(Font, 14);


        // Serial
        println(Serial.list());
        if (comPort == "")
        comPort = Serial.list()[Serial.list().length-1];
        myPort = new Serial(this, comPort, 9600);
        println (comPort);


        // Background
        background(0);
        // Line 0
        stroke (100);
        line (0, height/2, width, height/2);

}





// draw

void draw() {


        // Read from Serial
        String val = readSerial();


        // Display data
        if (val != "") {

                switch (val.charAt(0)) {

                        case 'x':
                        noStroke();
                        fill(0);
                        rect (20, 50, 80, -13);
                        stroke(100);
                        fill(255);
                        text ((float) parseInteger(val.substring(1))/1000, 20, 50); text ("G", 80, 50);
                        displayChart (20, height/2 - 20, width / 2 - 80 - 10, height/2, 2024, parseInteger(val.substring(1)));
                        // print("x:"); print(val); print("  "); println(parseInteger(val.substring(1)));
                        break;

                        case 'y':
                        noStroke();
                        fill(0);
                        rect (20, 70, 80, -13);
                        stroke(100);
                        fill(255);
                        text ((float) parseInteger(val.substring(1))/1000, 20, 70); text ("G", 80, 70);
                        displayChart (20, height/2 - 20, width / 2 - 10, height/2, 2024, parseInteger(val.substring(1)));
                        // print("y:"); print(val); print("  "); println(parseInteger(val.substring(1)));
                        break;

                        case 'z':
                        noStroke();
                        fill(0);
                        rect (20, 90, 80, -13);
                        stroke(100);
                        fill(255);
                        text ((float) parseInteger(val.substring(1))/1000, 20, 90); text ("G", 80, 90);
                        displayChart (20, height/2 - 20, width / 2 + 80 - 10, height/2, 2024, parseInteger(val.substring(1)));
                        // print("z:"); print(val); print("  "); println(parseInteger(val.substring(1)));
                        break;

                }

        }


        // delay
        delay (10);

}






// readSerial

String readSerial () {

        while (myPort.available() > 0) {

                // Read
                int val = myPort.read();
                buffer [cBuffer] = (char) val;


                // Reached end?
                if (val == 10) {

                        String retval = new String(buffer).substring(0, cBuffer - 1);
                        cBuffer = 0;
                        return retval;

                }


                // ++
                ++cBuffer;

        }

        return "";

}





// parseInteger

int parseInteger (String val) {

        int ival = 0;
        int sign = 1;

        for (int i=0;i<val.length();i++) {

                if (val.charAt(i) == '-')
                sign = -1;
                if (val.charAt(i) >= 48 && val.charAt(i) <= 57)
                ival +=  (val.charAt(i)-48) * pow(10,(val.length()-i-1));

        }


        return sign * ival;

}





// displayChart

void displayChart (int chartWidth, int chartMaxHeight, int null_x, int null_y, int maxvalue, int value) {

        // black
        fill (0);
        translate (null_x, 0);
        rect (0, 0, chartWidth, height);


        // white
        fill (255);
        translate (0, null_y);
        rect (0, 0, chartWidth, -1 * chartMaxHeight * value / maxvalue);

}

This website has been archived and is no longer maintained.