Arudinoでは動くSerial.readを使ったCSVデータ読み込みのプログラムが
ESP32では動かなかったのでまとめてみました。
原因は
Arudino unoではSerial.readするとserialEvent()が機能するが
ESP32では機能しない
注意事項と警告
serialEvent() Leonardo、Micro、またはYúnでは機能しません。
書いてるので同じ状況と推測
対策
serialEvent()をプログラム上で呼びだす。
プログラム
#include <Arduino.h>
#include <Wire.h>
String inputString = ""; // a String to hold incoming data
String Set_data[10];
int i=0;
void setup() {
Serial.begin(115200);
inputString.reserve(200);
}
void loop() {
serialEvent();
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar == ',') {
Set_data[i]=inputString;
inputString="";
// Serial.println(Set_data[i]);
++i;
}else if(inChar == '\n') {
Set_data[i]=inputString;
inputString="";
//Serial.println(Set_data[i]);
i=0;
for (int l=0; l <= 9; l++){
Serial.println(Set_data[l]);
}
}else{
inputString += inChar;
}
}
}
結果
シリアルモニターでテスト
9E3DiS,8JvSXN,6UomdD,53gRvt,3e9kNj,3e9kNj,_FmyZW,XVHhUH,TkUw5i,SqkLKd
を入力したら「,」ごとに区切りSerial.println