質問するログイン新規登録

回答編集履歴

2

追記

2021/06/11 05:48

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -10,4 +10,28 @@
10
10
  ESP32で`String s = "01234567890123456789";`、と`"1"`の両方の場合において、
11
11
  `sizeof(s)/sizeof(s[0])`を表示すると`12`になります。
12
12
 
13
- (`dataSize`を使えばよいのでは?)
13
+ ~~(`dataSize`を使えばよいのでは?)~~
14
+
15
+ ---
16
+
17
+ 参考元のコードからして結構無茶苦茶でしたが
18
+ `arraySize`を使って何がしたかったのか意図を推測するに、
19
+ 「`dst`の要素以上に元文字列を分割したら`-1`を返す」
20
+ という仕様なのでしょう。
21
+
22
+ そもそもこの仕様が妥当なのかはさておき、
23
+ ということは引数に`dst`の要素数も追加しなければいけません。
24
+
25
+ ---
26
+
27
+ さて、仮に`split()`が問題なく動いたとしましょう
28
+
29
+ ```Arduino
30
+ String myString = Serial.readStringUntil(';');
31
+ int index = split(myString,',',cmds);
32
+ if(Serial.available() >= 2){ // このif文の条件はなに?
33
+ ```
34
+
35
+ 「カンマ区切りで要素2つを受信したら以下の処理を行いたい」はずですから
36
+ 条件分が全然合ってませんね、
37
+ `Serial.available() >= 2`は「シリアルに受信しているけど取り出していない文字が2つ以上」の意ですから。

1

追記

2021/06/11 05:47

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -6,4 +6,8 @@
6
6
 
7
7
  `arraySize`は`data`の長さを表していません。
8
8
 
9
+ 例えば
10
+ ESP32で`String s = "01234567890123456789";`、と`"1"`の両方の場合において、
11
+ `sizeof(s)/sizeof(s[0])`を表示すると`12`になります。
12
+
9
13
  (`dataSize`を使えばよいのでは?)