ArduinoでSDカードからカンマ区切りのデータを読み出してパースする

csv形式でコマンドを書いてそれをArduinoでパースしたのでコードを共有します。パース部分はこちら(カンマ区切りのデータをarduinoのシリアルで受け取り配列に入れたい - Qiita)の記事を参考にParseElements関数に切り出しました。

呼び出し側のReadCommnadFromSD関数では改行コード毎にParseElements関数を呼び出す仕組みにしています。while文の中で必要な処理を書いてました。

void ReadCommandFromSD() {
  File myFile = SD.open("test.txt");
  
  while (myFile.available()) {
    String source = myFile.readStringUntil('\n');
    String elements[9];
    ParseElements(source, elements, 9);
  }
}

void ParseElements(String sourceStr, String *elements, unsigned int elements_size){
  int beginIndex = 0;
  for (int i = 0; i < elements_size; i++) {
    unsigned int endIndex;
    endIndex = sourceStr.indexOf(',', beginIndex);
    if (endIndex != -1) {
      elements[i] = sourceStr.substring(beginIndex, endIndex);
      beginIndex = endIndex + 1;
    } else {
      elements[i] = sourceStr.substring(beginIndex);
      break;
    }
  }
}