Multiple print values from Arduino and Processing

please format code with </> button * homework policy * asking questions

Hi, I am trying to send multiple print statements from my arduino to processing but I cant seem to obtain it properly in the processing. Could someone have a look please? Note only parts of the entire code is shown but nevertheless it should be clear. Essentially splitstr[0] should contain ALL the incoming data and should be mapped but splitstr[1] should be only the sampled value stored in the table!

Arduino:

#include <SoftwareSerial.h> 
int analog_output;                         //Serial Read output
int sample_output;
int r_pin = A0;                              //Initialising output pin
unsigned long delayStart = 0;          // the time the delay started
unsigned long DELAY_TIME = 1500;       //1500 is equal to 1.5 seconds
bool delayRunning = false;             // true if still waiting for delay to finish
int value;

void setup() {              
  Serial.begin(9600);           // Starting serial communication at 9600 Baud Rate
  delayStart = millis();      //start delay
  delayRunning = true;
}

void loop() {
  if (delayRunning == true){
    analog_output = analogRead (r_pin);    // Reading from the resistor
    Serial.println (analog_output);
  }
  else if (delayRunning == true && delayStart % DELAY_TIME  == 0) {
    sample_output = analogRead (r_pin);
    Serial.print(analog_output);
    Serial.println(sample_output);      
  }
}

Processing:

Table table;

Table table;

void setup () {
  size(1000, 700);                               // Set the window size:   
  smooth();
  String portName = Serial.list()[0];
  myPort = new Serial(this, portName, 9600);    // A serialEvent() is generated when a newline character is received
  myPort.bufferUntil('\n');                     // Sets a specific byte to buffer until before calling serialEvent()
  //myPort.bufferUntil(DELAY_TIME);
  background(0);                              // Set inital background colour
     
  table = new Table();
  table.addColumn("Time Elapsed: ");
  table.addColumn("Signal ADC Value: ");
  table.addColumn("Voltage (V): ");
  table.addColumn("Sampled Value: ");
  
  frameRate(60);
}

void serialEvent (Serial myPort) {
  // get the ASCII string:
  inString = myPort.readStringUntil('\n');
  println(inString);
  String [] splitstr = split(inString,' ');
  if (splitstr != null) {
    //inString = trim(inString);                          // trim off whitespaces.
    inByte = float(trim(splitstr[0]));                    // convert to a number.
    float inScreen = map(inByte, 0, 1023, 0, height);     // map to the screen height.
    println(inScreen);
    newData = true; 
  }

  Vout = Vin*inByte/1023;
  
  TableRow newRow = table.addRow();
  newRow.setString("Time Elapsed: ", txt);
  newRow.setFloat("Signal ADC Value: ", inByte);
  newRow.setFloat("Voltage (V): ",Vout);
  if (splitstr[1] != null){
  newRow.setFloat("Sampled Value: ",float(splitstr[1]));
  };  
}

see how receiving an sending then mange your code

// This example code is in the public domain.
import processing.serial.*;
int bgcolor;   // Background color
int fgcolor;   // Fill color
Serial myPort;      // The serial port
int[] serialInArray = new int[3]; // Where we'll put what we receive
int serialCount = 0;     // A count of how many bytes we receive
int xpos, ypos;     // Starting position of the ball
boolean firstContact = false;  // Whether we've heard from the
          // microcontroller
void setup() {
 size(256, 256); // Stage size
 noStroke();  // No border on the next thing drawn
 // Set the starting position of the ball (middle of the stage)
 xpos = width/2;
 ypos = height/2;
 // Print a list of the serial ports, for debugging purposes:
 println(Serial.list());
 // I know that the first port in the serial list on my mac
 // is always my FTDI adaptor, so I open Serial.list()[0].
 // On Windows machines, this generally opens COM1.
 // Open whatever port is the one you're using.
 String portName = Serial.list()[0];
 myPort = new Serial(this, portName, 9600);
}
void draw() {
 background(bgcolor);
 fill(fgcolor);
 // Draw the shape
 ellipse(xpos, ypos, 20, 20);
}
void serialEvent(Serial myPort) {
 // read a byte from the serial port:
 int inByte = myPort.read();
 // if this is the first byte received, and it's an A,
 // clear the serial buffer and note that you've
 // had first contact from the microcontroller.
 // Otherwise, add the incoming byte to the array:
 if (firstContact == false) {
 if (inByte == 'A') {
  myPort.clear();   // clear the serial port buffer
  firstContact = true;  // you've had first contact from the microcontroller
  myPort.write('A');  // ask for more
 }
 }
 else {
 // Add the latest byte from the serial port to array:
 serialInArray[serialCount] = inByte;
 serialCount++;
 // If we have 3 bytes:
 if (serialCount > 2 ) {
  xpos = serialInArray[0];
  ypos = serialInArray[1];
  fgcolor = serialInArray[2];
  // print the values (for debugging purposes only):
  println(xpos + "t" + ypos + "t" + fgcolor);
  // Send a capital A to request new sensor readings:
  myPort.write('A');
  // Reset serialCount:
  serialCount = 0;
 }
 }
}

arduino

/*
 Serial Call and Response
 Language: Wiring/Arduino
 This program sends an ASCII A (byte of value 65) on startup
 and repeats that until it gets some data in.
 Then it waits for a byte in the serial port, and
 sends three sensor values whenever it gets a byte in.
 Thanks to Greg Shakar and Scott Fitzgerald for the improvements
 The circuit:
 * potentiometers attached to analog inputs 0 and 1
 * pushbutton attached to digital I/O 2
 Created 26 Sept. 2005
 by Tom Igoe
 modified 24 April 2012
 by Tom Igoe and Scott Fitzgerald
 This example code is in the public domain.
 http://www.arduino.cc/en/Tutorial/SerialCallResponse
 */
int firstSensor = 0; // first analog sensor
int secondSensor = 0; // second analog sensor
int thirdSensor = 0; // digital sensor
int inByte = 0;   // incoming serial byte
void setup()
{
 // start serial port at 9600 bps:
 Serial.begin(9600);
 while (!Serial) {
 ; // wait for serial port to connect. Needed for Leonardo only
 }
 pinMode(2, INPUT); // digital sensor is on digital pin 2
 establishContact(); // send a byte to establish contact until receiver
      // responds
}
void loop()
{
 // if we get a valid byte, read analog ins:
 if (Serial.available() > 0) {
 // get incoming byte:
 inByte = Serial.read();
 // read first analog input, divide by 4 to make the range 0-255:
 firstSensor = analogRead(A0)/4;
 // delay 10ms to let the ADC recover:
 delay(10);
 // read second analog input, divide by 4 to make the range 0-255:
 secondSensor = analogRead(1)/4;
 // read switch, map it to 0 or 255L
 thirdSensor = map(digitalRead(2), 0, 1, 0, 255);
 // send sensor values:
 Serial.write(firstSensor);
 Serial.write(secondSensor);
 Serial.write(thirdSensor);
 }
}
void establishContact() {
 while (Serial.available() <= 0) {
 Serial.print('A'); // send a capital A
 delay(300);
 }
}