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 dilakukan.
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 Running Pada Serial Monitor :
Tags:
Tutorial