String data_In;
String DT[10];
int i;
boolean flag_parse = false;
//LED PORT
int LED1 = 23;
int LED2 = 22;
int flag_Led1, flag_Led2;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Parsing Data Ready!");
data_In;
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0){
char inputChar = (char) Serial.read();
data_In += inputChar;
if(inputChar == '\n'){
flag_parse = true; // marking progress
}
}
if(flag_parse){
parsing_Data();
flag_parse = false;
data_In=""; // reset string buffer
}
led(LED1, flag_Led1);
led(LED2, flag_Led2);
}
void parsing_Data(){
int j = 0;
// Read data input from serial
Serial.print("Isi data In: "); Serial.println(data_In);
// Clearing Inisial Data
DT[j] = "";
//Basic Algorithm for parsing data
for(i = 0; i < data_In.length(); i++){
//checking sparator data frame in csv format --> data1; data2; data3
if(data_In[i] == ' ' || data_In[i] == '=' || data_In[i] == '\n'){
j++;
DT[j] = ""; //Inisialisasi array DT[j]
}else{
DT[j] = DT[j] + data_In[i];
}
}
// Serial.print("Data 0= ");Serial.println(DT[0].toInt());
// Serial.print("Data 1= ");Serial.println(DT[1].toInt());
/*
PARAM LED1=1
SET LED1=1
RUN ALL
KILL
ETC
flag_Led1 = DT[0].toInt();
flag_Led2 = DT[1].toInt();
*/
if(DT[0] == "PARAM"){
Serial.println("Param True!");
if(DT[1] == "LED1"){
Serial.println("LED1 Sellected!");
flag_Led1 = DT[2].toInt();
Serial.print("Data LED1:");Serial.println(flag_Led1);
}if(DT[1] == "LED2"){
Serial.println("LED1 Sellected!");
flag_Led2 = DT[2].toInt();
Serial.print("Data LED2:");Serial.println(flag_Led2);
}else{
Serial.println("Another LED!");
}
}if(DT[0] == "RUN"){
Serial.println("Running");
if(DT[1] == "ALL"){
flag_Led1 = 1;
flag_Led2 = 1;
Serial.println("All");
}else{
Serial.println("Stop!");
}
}if(DT[0] == "KILL"){
Serial.println("KILLED");
if(DT[1] == "ALL"){
flag_Led1 = 0;
flag_Led2 = 0;
Serial.println("All");
}else{
Serial.println("RUNNING!");
}
}else{
Serial.println("Another Command!");
}
}
void led(int ch, int state){
if(state == 0){
digitalWrite(ch, HIGH);
}
if(state == 1){
digitalWrite(ch, LOW);
}
}