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