回答編集履歴
1
関数仕様の勘違いがあったので修正
answer
CHANGED
@@ -85,5 +85,6 @@
|
|
85
85
|
(この機にスレッドセーフ、という言葉について調べてみるといいかもしれません。)
|
86
86
|
|
87
87
|
[余談]
|
88
|
-
イベントハンドラserialEvent()の中でSerial.readStringUntil()メソッドを使っています。このメソッドは指定文字が来るまでひたすら待ちに入る可能性もあり、プログラムの進行を阻害することがあります。
|
89
|
-
|
88
|
+
イベントハンドラserialEvent()の中でSerial.readStringUntil()メソッドを使っています。~~このメソッドは指定文字が来るまでひたすら待ちに入る可能性もあり、プログラムの進行を阻害することがあります。~~ (勘違いにつき以下削除、書き換え。readStringUntil()はブロックしない)
|
89
|
+
|
90
|
+
Serial.readStringUntil()は、[公式のリファレンス](https://processing.org/reference/libraries/serial/Serial_readStringUntil_.html)によれば"Returns null if it doesn't find what you're looking for. "とのことなので、例えば"10,12\r\n"の'1'~'\r'を受信するとそれぞれserialEvent()が起動してreceiveMessageがNULLになる、ということでそのタイミングが先の`if (receiveMessage != null && receiveMessage != "")`と絡み合うとぬるぽで止まる、ということになるようですね。
|