回答編集履歴

2

追記

2021/06/11 05:48

投稿

ozwk
ozwk

スコア13553

test CHANGED
@@ -22,4 +22,52 @@
22
22
 
23
23
 
24
24
 
25
- (`dataSize`を使えばよいのでは?)
25
+ ~~(`dataSize`を使えばよいのでは?)~~
26
+
27
+
28
+
29
+ ---
30
+
31
+
32
+
33
+ 参考元のコードからして結構無茶苦茶でしたが
34
+
35
+ `arraySize`を使って何がしたかったのか意図を推測するに、
36
+
37
+ 「`dst`の要素以上に元文字列を分割したら`-1`を返す」
38
+
39
+ という仕様なのでしょう。
40
+
41
+
42
+
43
+ そもそもこの仕様が妥当なのかはさておき、
44
+
45
+ ということは引数に`dst`の要素数も追加しなければいけません。
46
+
47
+
48
+
49
+ ---
50
+
51
+
52
+
53
+ さて、仮に`split()`が問題なく動いたとしましょう
54
+
55
+
56
+
57
+ ```Arduino
58
+
59
+ String myString = Serial.readStringUntil(';');
60
+
61
+ int index = split(myString,',',cmds);
62
+
63
+ if(Serial.available() >= 2){ // このif文の条件はなに?
64
+
65
+ ```
66
+
67
+
68
+
69
+ 「カンマ区切りで要素2つを受信したら以下の処理を行いたい」はずですから
70
+
71
+ 条件分が全然合ってませんね、
72
+
73
+ `Serial.available() >= 2`は「シリアルに受信しているけど取り出していない文字が2つ以上」の意ですから。

1

追記

2021/06/11 05:47

投稿

ozwk
ozwk

スコア13553

test CHANGED
@@ -14,4 +14,12 @@
14
14
 
15
15
 
16
16
 
17
+ 例えば
18
+
19
+ ESP32で`String s = "01234567890123456789";`、と`"1"`の両方の場合において、
20
+
21
+ `sizeof(s)/sizeof(s[0])`を表示すると`12`になります。
22
+
23
+
24
+
17
25
  (`dataSize`を使えばよいのでは?)