回答編集履歴

1

追記

2020/06/06 14:10

投稿

thkana
thkana

スコア7639

test CHANGED
@@ -5,3 +5,23 @@
5
5
 
6
6
 
7
7
  2文字以上で構成される「文字列」(例えば"1234"とか)をやりとりしたくなったらまた別のことを知らなきゃいけませんが、まだそういう話はないのですね?
8
+
9
+
10
+
11
+ ---
12
+
13
+ シリアル通信(TCP/IPとかでも同じことですが)の通信の単位は、1byteです。通信の根っこのところでは、1byteのバラバラのデータでしかなく、「塊」にはならない、というのが1つ重要なこと。
14
+
15
+ つまり、送る側で'1''2''3''4''5'をまとめて送ったとしても、受ける側がそれをまとめて受け取る保証はないのです。'1''2'と'3''4''5'とか、'1'と'2'と'3'と'4'と'5'とかで受け取るかも知れません。
16
+
17
+ なので、データがどのようにまとまっているのか、どこで区切ればいいのかは、データの送信側と受信側で打ち合わせておいて、何らかの規則を設けて判別してやらなければいけません。
18
+
19
+ > カンマ区切りで複数の数値データ(1桁以上)をArduino側に送信して
20
+
21
+
22
+
23
+ ということであれば、一文字ずつ送られてくるデータを蓄積して、カンマあるいは改行コードを受け取ったらその時点で溜めておいたデータを数値に変換する、というような手続きが必要です。くれぐれも、ある受信操作で'1''2'を受け取ったから12だ、と判断したりしませんように。その次に'3' ','が送られてきたら、実は123だった...ということになってしまいます。
24
+
25
+
26
+
27
+ 実装方法はいろいろありますが...'Arduino シリアル カンマ区切り'あたりで検索すればいろいろ例が見つかると思います。