Go Down

Topic: Parsing Data (Read 441 times) previous topic - next topic

Hi everyone,,
I have data "123456789"
and I want to parse data that the result is:
data1=123
data2=456
data3=789

how the list program???
thank you,,

Henry_Best


Hi everyone,,
I have data "123456789"
and I want to parse data that the result is:
data1=123
data2=456
data3=789

how the list program???
thank you,,

What form is your data in? Is it a serial input (one digit at a time) or stored in a variable?

mrburnette

@budiraharjo:

If the data "123456789" is a String object as defined here: http://arduino.cc/en/Reference/StringObject then you can use any of the String object functions to parse the object.

CAVEAT: please read this first: http://forum.arduino.cc/index.php/topic,124367.0.html
The String Object is not a highly recommended approach.  That being said, if will work.

IF the data "123456789" is coming in over a port (say, serial port) then you must aggregate individual character digits (bytes) until you have all 9 digits in one string object.  IF you have control over the incoming data string format, you can take a different approach by using delimiters, that is: "123 " "456 " "789 " or "123,456,489" or a variety of similar approaches.  See my calculator code for how I parse commands and numerics: http://forum.arduino.cc/index.php?topic=172406.msg1280843#msg1280843

- Ray

Henry_Best

If the data is in a variable then maths can do it for you:
Code: [Select]

mydata = 123456789;
data1 = mydata/1000000;
data2 = (mydata % 1000000)/1000;
data3 = (mydata % 1000);

mydata is a long
data1, data2 and data3 are ints.

zoomkat

Very simple parse setup:

Code: [Select]

//send string using serial monitor
String readString, data1, data2, data3;

void setup() {
  Serial.begin(9600);
  Serial.println("parse-test-3"); // so I can keep track of what is loaded
}

void loop() {
  while (Serial.available()) {
    delay(2); 
    if (Serial.available() >0) {
      char c = Serial.read();  //gets one byte from serial buffer
      readString += c; //makes the string readString
    }
  }

  if (readString.length() >0) {
    Serial.println(readString); //see what was received

    // expect a string like 123456789 with three data partts     
    data1 = readString.substring(0, 3); //get the first three characters
    data2 = readString.substring(3, 6); //get the next three characters
    data3 = readString.substring(6, 9); //get the next three characters

    Serial.println(data1);  //print to serial monitor to see results
    Serial.println(data2);
    Serial.println(data3);

    readString="";
    data1="";
    data2="";
    data3="";
  }
}

Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy