Parsing data di arduino

Parsing data merupakan sebuah kegiatan yang wajib ada pada sebuah program, jika pada program tersebut terdapat pengolahan data terhadap sebuah paket data tertentu. Parsing data juga diperlukan pada sisi software dan hardware dari robosoccer. Data yang diperoleh dari komputer server mengharuskan hardware melakukan paring data terhadap paket data yang diterima. Pada postingan kali ini, akan dibahas mengenai program parsing data pada robot, yang mana pembuatan programnya menggunakan arduino IDE.

Pada program kali ini, terdapat beberapa bagian mulai dari program inisialisasi, terima data, parsing data, menampilkan data dan beberapa bagian lainnya. Berikut ini penjelasan singkat mengenai bagian-bagian pada program.

1.   Deklarasi variabel

Deklarasi variabel digunakan untuk mengenalkan variabel-variabel yang akan digunakan. Terdapat beberapa variabel yang dideklarasikan sebagai variabel global, yaitu sebagai berikut :

 String dataIn;
 String dt[10];
 int i;
 boolean parsing=false;

2.   Inisialisasi

Proses inisialisasi dan beberapa konfigurasi terletak pada fungsi setup(). Hal ini dikarenakan fungsi setup() adalah fungsi yang hanya dijalankan sekali saat program pertama kali dijalankan. Dengan kata lain fungsi setup() akan dijalankan pada saat rangkaian diberi sumber tegangan.

 void setup() {
   Serial.begin(9600);
   dataIn="";
}

pada program diatas, terdapat sebuah konfigurasi yang merupakan pengaktifan komunikasi serial dengan nilai baudrate sebesar 9600. Selain itu, variabel dataIn akan diinisialisasi dengan cara mengisi variabel tersebut dengan data kosong.

3.   Terima data serial

Proses terima data serial terdapat didalam fungsi loop(). Setiap program yang ada didalam fungsi ini akan dijalankan terus selama rangkaian mendapatkan supplai tegangan. Kontroller selalu dalam posisi stand by untuk menerima data serial. Jika ada data masuk, maka data tersebut akan ditampung dahulu kedalam sebuah variabel bernama inChar. Variabel tersebut akan dicek, jika karakter yang diterima berupa karakter enter (‘\n’) maka proses penerimaan data selesai yang kemudian akan memberikan nilai true pada variabel parsing. Jika karakter yang diterima buka karakter enter, maka karakter tersebut akan ditampung terlebih dahulu kedalam sebuah buffer yang berupa variabel string bernama dataIn.

Jika variabel parsing bernilai true, maka menandakan proses parsing data dimulai. Proses parsing data dimulai dengan pemanggilan fungsi parsingData(). Dan proses parsing data pun dimulai.

void loop() {
  if(Serial.available()>0) {
    char inChar = (char)Serial.read();
    dataIn += inChar;
    if (inChar == '\n') {
    parsing = true;
  }
}

if(parsing){
    parsingData();
    parsing=false;
    dataIn="";
  }
}

4.   Parsing data

Proses parsing data terjadi pada fungsi parsingData(). Sebelum proses parsing dimulai, data yang diterima yang telah ditampung sebelummnya ditampilkan/dikirimkan kembali melalui serial port.

Parsing data dilakukan dengan cara mengecek tiap karakter yang ada pada variabel dataIn. Tiap karakter tersebut akan dibandingkan dengan tail (karakter terakhir paket data) yang berupa karakter pagar (#) dan karakter pemisah antar data yang berupa karakter koma(,). Pengecekan dimulai dari index 1 (karakter kedua) variabel dataIn, hal ini dikarenakan index 0 (karakter pertama) merupakan header (karakter pertama) dalam paket data.

Setiap karakter yang telah melalui proses pengecekan, akan ditampung kedalam sebuah variabel string yang dikelompokkan dalam sebuah array yang diberi nama dt. Jika pada proses pengecekan ditemukan karakter koma (,), maka dengan otomatis variabel penampung data setelah dicek akan berpindah dengan cara increment index array nya. Proses tersebut akan terus dilakukan berulangkali sampai perulangan berakhir.

Setelah proses parsing data selesai, data hasil proses parsing yang terdapat pada array dt akan ditampilkan. Dengan begitu, proses parsing data pun selesai dilakukamn.

Berikut ini merupakan program yang terdapat pada fungsi parsingData().

void parsingData(){
int j=0;

//kirim data yang telah diterima sebelumnya
Serial.print("data masuk : ");
Serial.print(dataIn);
Serial.print("\n");

//inisialisasi variabel, (reset isi variabel)
dt[j]="";
//proses parsing data
for(i=1;i<dataIn.length();i++){
//pengecekan tiap karakter dengan karakter (#) dan (,)
if ((dataIn[i] == '#') || (dataIn[i] == ','))
{
//increment variabel j, digunakan untuk merubah index array penampung
j++;
dt[j]="";       //inisialisasi variabel array dt[j]
}
else
{
//proses tampung data saat pengecekan karakter selesai.
dt[j] = dt[j] + dataIn[i];
}
}

//kirim data hasil parsing
Serial.print("data 1 : ");
Serial.print(dt[0].toInt());
Serial.print("\n");
Serial.print("data 2 : ");
Serial.print(dt[1].toInt());
Serial.print("\n");
Serial.print("data 3 : ");
Serial.print(dt[2].toInt());
Serial.print("\n\n");
}

Hasil program :

parsing data

==================================
Semoga bermanfaat 🙂
Rifqi Amalya Fatekha
==================================

Advertisements

11 thoughts on “Parsing data di arduino

  1. contoh diatas data yang diparsing itu angka mas,
    kalau huruf juga seharusnya bisa.
    cuma kalau misalkan datanya itu angka, setelah selesai di parsing harus di convert ke int atau double, karena data setelah diparsing itu berupa string.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s