«

»

Mar 11

Membaca Data Serial

Dalam beberapa aplikasi mikrokontroler, kita memerlukan cara untuk menerima sejumlah data numerik, baik integer maupun float, yang dikirim dari suatu divais. Pengiriman data satu dengan yang lain dipisah dengan sebuah karakter delimiter, misal, titik koma (;).

void readValueSerial(char *data, byte size) {
  byte index = 0;
  byte timeout = 0;
  data[0] = '\0';

  do {
    if ( Serial.available() == 0) {
      delay(1);
      timeout++;
    } else {
      data[index] = Serial.read();
      timeout = 0;
      index++;
    }
  } while ((index == 0 || data[index-1] != ';') && (timeout < 10) && (index < size-1));

  data[index] = '\0';
}

Setelah data angka diterima satu per satu, masing-masing di-konversi sesuai dengan formatnya, bulat atau pecahan.

float readFloatSerial() {
  char data[15] = "";

  readValueSerial(data, sizeof(data));
  return atof(data);
}

long readIntegerSerial() {
  char data[16] = "";

  readValueSerial(data, sizeof(data));
  return atol(data);
}