Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Cara Mudah Parsing/Split Teks/String/Data di Arduino/NodeMCU/ESP8266

Parsing data biasanya dibutuhkan saat kita mau memproses sebuah kiriman data (payload) yang bentuknya panjang dalam sekali waktu pengiriman dalam sebuah event komunikasi data. Data ini biasanya dikirim melalui port serial (protokol UART, RS422, RS485), ethernet/WIFI (protokol TCP/IP) atau mungkin dalam komunikasi IoT (REST, XMPP, MQTT, dll). Pada umumnya data ini berupa teks dengan tipe data berupa char array atau String. Data ini bersifat ‘Stream’, jadi akan diterima satu persatu dalam satu paket pengiriman dalam kurun waktu yang sangat cepat. Jadi Anda harus menerima dulu semua data baru dapat diproses atau di-parsing.

Pada artikel ini saya menganggap data sudah berbentuk String ya, supaya lebih mudah dioperasikan. Cuma ketika menggunakan Arduino, perhatikan SRAM Anda ya, jangan sampai lebih dari 80% saat di-compile (perhatikan warning message di jendela debug bagian bawah Arduino IDE). Sebagai perbandingan, SRAM Arduino Uno adalah 2 Kilo Byte (2KB), Mega 8 KB, ESP8266 ESP12E (core NodeMCU ) = 36KB. Jadi kalau Anda menggunakan ESP12/NodeMCU cukup aman bermain-main dengan tipe data String.

Catatan: SRAM atau Static Random Access Memory adalah tempat menyimpan data yang bersifat volatile (hilang ketika sumber daya / tegangan) dimatikan, yang digunakan untuk menyimpan dan memproses data sementara, termasuk diantaranya adalah variabel

Script Parsing Data Arduino / ESP8266

Untuk memparsing data teks (khususnya yang bertipe String) sangat mudah, bisa Anda gunakan penggalan script di bawah (sumber: Stackoverflow – maaf saya lupa link-nya 🙂 )

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
String stringku = "ok 123 456 789 abc";
Serial.print("data string: ");Serial.println(stringku);
String substringku0 = getValue(stringku, ' ', 0);
Serial.print("substring[0]: ");Serial.println(substringku0);
String substringku3 = getValue(stringku, ' ', 3);
Serial.print("substring[3]: ");Serial.println(substringku3);
}

void loop() {
  // put your main code here, to run repeatedly:

}

String getValue(String data, char separator, int index)
{
  int found = 0;
  int strIndex[] = {0, -1};
  int maxIndex = data.length()-1;

  for(int i=0; i<=maxIndex &amp;&amp; found<=index; i++){
    if(data.charAt(i)==separator || i==maxIndex){
        found++;
        strIndex[0] = strIndex[1]+1;
        strIndex[1] = (i == maxIndex) ? i+1 : i;
    }
  } 

  return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}

Jika Anda running script di atas, hasilnya dapat Anda lihat di Serial Monitor (menu Tools – Serial Monitor), sebagai berikut:

Yang perlu Anda perhatikan adalah bagaimana cara memparsing data teks yang ditunjukkan pada baris kode 7 (menghasilkan substring indeks data 0) dan baris 9 ( menghasilkan substring indeks data 3), dengan pemisah data (separator) berupa karakter spasi (” “). Anda juga dapat mengubahnya sesuai dengan kebutuhan.

Demikian sedikiti tutorial bagaimana cara memparsing data teks di arduino maupun NodeMCU/ESP8266. Semoga bermanfaat untuk Anda

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x