Arduinoで"abc,def,ghi,jk"などの文字列を,で区切って配列に入れる関数です。
String cmds[7] = { "\n" };
//-------------------------------------------------------
//概要:dataの文字を区切って配列に入れる
//引数:data=区切りたい文字列 delimiter=区切り文字 dst=区切った文字を入れる配列
//戻り値:配列の数
//-------------------------------------------------------
int split(String data, char delimiter, String* dst) {
int index = 0;
int arraySize = (sizeof(data)) / sizeof((data[0]));
int datalength = data.length();
for (int i = 0; i < datalength; i++) {
char tmp = data.charAt(i);
if (tmp == delimiter) {
index++;
if (index > (arraySize - 1)) return -1;
} else dst[index] += tmp;
}
return (index + 1);
}
void setup() {
String Data = "abc,def,ghi,jk"
Serial.begin(19200); // シリアル通信速度設定
int index = split(Data, ',', cmds);
for(int i=0;i < index;i++){
Serial.println(cmds[i]);
}
}
結果
abc
def
ghi
jk