フォーラム詳細
-
解決済み
#ID:56
マルチスレッド処理について -
投稿者:おさむ
投稿日:2018年11月15日
トークノードの次にQRコードノードで読み取りをすることと
同時に
ストレージノードでパブリックゾーンのテキストのセットや読み取りを行いたいと考えています。
テストフローを作成してみましたが、
QRコードが起動できないことや、起動しても処理が止まってしまいます。
マルチスレッドでできるとノードだけで構成していると思いましたが
どこかで思い違いをしていますでしょうか。
すみませんが、JSONを掲載しますのでアドバイス頂けると有難いです。
[{"id":"3c6f5346bd0.4b8528","type":"inject","z":"3c6cafa111c.9d2de","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":350,"y":260,"wires":[["3c613613fb5.2e40f"]]},{"id":"3c6f52714f.e73cce8","type":"storage","z":"3c6cafa111c.9d2de","category":"text","zone":"private","mode":"get","data":"しない","path":"test","file":"","name":"check","version":"2","x":770,"y":260,"wires":[["3c6a41def36.9b47d"]]},{"id":"3c6a41def36.9b47d","type":"debug","z":"3c6cafa111c.9d2de","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":910,"y":260,"wires":[]},{"id":"3c66c31127a.9474cc","type":"inject","z":"3c6cafa111c.9d2de","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":460,"y":160,"wires":[["3c6bd1afc3.7593"]]},{"id":"3c6bd1afc3.7593","type":"talk","z":"3c6cafa111c.9d2de","word":"QRコードを読み取ります。","subtitle":"QRコードを読み取ります。","edit":false,"expression":"normal","motioneditor":"\nEND","name":"","motionmode":"editor","target":"face","asset":"face_front","version":1,"x":590,"y":160,"wires":[["3c6f18922d9.23d85"]]},{"id":"3c6f18922d9.23d85","type":"qrcode","z":"3c6cafa111c.9d2de","timeout":30,"mode":"scan","name":"","data":"","version":1,"x":740,"y":160,"wires":[["3c6b2950292.a993c"]]},{"id":"3c6b2950292.a993c","type":"debug","z":"3c6cafa111c.9d2de","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":870,"y":160,"wires":[]},{"id":"3c6733ecb58.7742f4","type":"storage","z":"3c6cafa111c.9d2de","category":"text","zone":"private","mode":"set","data":"1","path":"test","file":"","name":"set","version":"2","x":630,"y":260,"wires":[["3c6f52714f.e73cce8"]]},{"id":"3c613613fb5.2e40f","type":"storage","z":"3c6cafa111c.9d2de","category":"text","zone":"private","mode":"delete","data":"1","path":"test","file":"","name":"delete","version":"2","x":510,"y":260,"wires":[["3c6733ecb58.7742f4"]]}]
このトピックに返信するにはログインが必要です。
2件の返信を表示中
#ID:151
回答者:ユニロボット
回答日:2018年11月15日
おさむ様
サンプルを拝見いたしました。
まず、skillcreatorはフローの終端で必ずリセット処理を行います。
(例えるなら、実行中のアプリが終了したという風に解釈していただけるとわかりやすいかと思います。)
このため、上記サンプルのように、ストレージノードの読み書きをマルチスレッドで行うことは可能なのですが、二つのフローがそれぞれ終端を迎えるとリセットをかけてしまいます。QRコードが起動できないことや、起動しても処理が止まるというのは、ストレージノード側の終端でリセットが掛かってしまっています。
このような場合は、ストレージノード側のフローにリセットがかからないようにする工夫が必要となります。
具体的には、下記サンプルにありますように、フローの終端に何もないfunctionNodeで付け加えて、フロー自体を途中で処理を止めてしまというものになります。
なお、メインの処理はあくまでも終端でリセットがかかるようにしてください。全てのフローで終端処理を止めてしまい、リセットを全く設けないと、ユニボが固まってしまいますので、ご注意ください。
[{"id":"1e449821e.36c71","type":"inject","z":"1ba65c8b3.016fc8","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":220,"wires":[["130a2e686.fe502a"]]},{"id":"1720d789b.eefa18","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"get","data":"しない","path":"test","file":"","name":"check","version":"2","x":670,"y":220,"wires":[["152bd8994.93b168"]]},{"id":"1d4ef9b16.d5d708","type":"inject","z":"1ba65c8b3.016fc8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":120,"wires":[["12e7e8991.1294f6"]]},{"id":"12e7e8991.1294f6","type":"talk","z":"1ba65c8b3.016fc8","word":"QRコードを読み取ります。","subtitle":"QRコードを読み取ります。","edit":false,"expression":"normal","motioneditor":"\nEND","name":"","motionmode":"editor","target":"face","asset":"face_front","version":1,"x":490,"y":120,"wires":[["1761c0ec4.3ed36"]]},{"id":"1761c0ec4.3ed36","type":"qrcode","z":"1ba65c8b3.016fc8","timeout":30,"mode":"scan","name":"","data":"","version":1,"x":640,"y":120,"wires":[["19d024f6d.76bc6"]]},{"id":"19d024f6d.76bc6","type":"debug","z":"1ba65c8b3.016fc8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":770,"y":120,"wires":[]},{"id":"18b30bf26.b0c83","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"set","data":"1","path":"test","file":"","name":"set","version":"2","x":530,"y":220,"wires":[["1720d789b.eefa18"]]},{"id":"130a2e686.fe502a","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"delete","data":"1","path":"test","file":"","name":"delete","version":"2","x":410,"y":220,"wires":[["18b30bf26.b0c83"]]},{"id":"152bd8994.93b168","type":"function","z":"1ba65c8b3.016fc8","name":"","edit":"","func":"","outputs":1,"dummy":"1","noerr":0,"x":830,"y":220,"wires":[[]]}]
回答者:ユニロボット
回答日:2018年11月15日
おさむ様
サンプルを拝見いたしました。
まず、skillcreatorはフローの終端で必ずリセット処理を行います。
(例えるなら、実行中のアプリが終了したという風に解釈していただけるとわかりやすいかと思います。)
このため、上記サンプルのように、ストレージノードの読み書きをマルチスレッドで行うことは可能なのですが、二つのフローがそれぞれ終端を迎えるとリセットをかけてしまいます。QRコードが起動できないことや、起動しても処理が止まるというのは、ストレージノード側の終端でリセットが掛かってしまっています。
このような場合は、ストレージノード側のフローにリセットがかからないようにする工夫が必要となります。
具体的には、下記サンプルにありますように、フローの終端に何もないfunctionNodeで付け加えて、フロー自体を途中で処理を止めてしまというものになります。
なお、メインの処理はあくまでも終端でリセットがかかるようにしてください。全てのフローで終端処理を止めてしまい、リセットを全く設けないと、ユニボが固まってしまいますので、ご注意ください。
[{"id":"1e449821e.36c71","type":"inject","z":"1ba65c8b3.016fc8","name":"","topic":"","payload":"","payloadType":"date","repeat":"5","crontab":"","once":false,"onceDelay":0.1,"x":250,"y":220,"wires":[["130a2e686.fe502a"]]},{"id":"1720d789b.eefa18","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"get","data":"しない","path":"test","file":"","name":"check","version":"2","x":670,"y":220,"wires":[["152bd8994.93b168"]]},{"id":"1d4ef9b16.d5d708","type":"inject","z":"1ba65c8b3.016fc8","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":120,"wires":[["12e7e8991.1294f6"]]},{"id":"12e7e8991.1294f6","type":"talk","z":"1ba65c8b3.016fc8","word":"QRコードを読み取ります。","subtitle":"QRコードを読み取ります。","edit":false,"expression":"normal","motioneditor":"\nEND","name":"","motionmode":"editor","target":"face","asset":"face_front","version":1,"x":490,"y":120,"wires":[["1761c0ec4.3ed36"]]},{"id":"1761c0ec4.3ed36","type":"qrcode","z":"1ba65c8b3.016fc8","timeout":30,"mode":"scan","name":"","data":"","version":1,"x":640,"y":120,"wires":[["19d024f6d.76bc6"]]},{"id":"19d024f6d.76bc6","type":"debug","z":"1ba65c8b3.016fc8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":770,"y":120,"wires":[]},{"id":"18b30bf26.b0c83","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"set","data":"1","path":"test","file":"","name":"set","version":"2","x":530,"y":220,"wires":[["1720d789b.eefa18"]]},{"id":"130a2e686.fe502a","type":"storage","z":"1ba65c8b3.016fc8","category":"text","zone":"private","mode":"delete","data":"1","path":"test","file":"","name":"delete","version":"2","x":410,"y":220,"wires":[["18b30bf26.b0c83"]]},{"id":"152bd8994.93b168","type":"function","z":"1ba65c8b3.016fc8","name":"","edit":"","func":"","outputs":1,"dummy":"1","noerr":0,"x":830,"y":220,"wires":[[]]}]
#ID:152
回答者:おさむ
回答日:2018年11月15日
迅速な回答大変ありがとうございます。
基本的なところが理解できていなかったようです。
サンプルを参考にして作成してみます。
回答者:おさむ
回答日:2018年11月15日
迅速な回答大変ありがとうございます。
基本的なところが理解できていなかったようです。
サンプルを参考にして作成してみます。