SyntaxHighlighter

---SyntaxHighlighter ウィジェット---

2016年6月30日木曜日

LUA_RUN_SCRIPTが動かない時の切り分け方

※本情報は、参考のために残しており、古い情報を含みます。
 現在主に更新しているのはwikiですので、最新の情報はwikiを参照してください。

---

FlashAirのLuaスクリプト実行機能に、
起動時に実行する"LUA_RUN_SCRIPT"という設定がありますが、これが結構クセモノです。

なにがクセモノかというと、スクリプトでエラーが起きたことを知る手段がありません。
それだけなのですが、それが本当に致命的。文法エラーひとつわからない。

ので、そんな時の切り分け方を以下に記します。

0. ファームウェアバージョンを確認する
 CONFIGファイルのVERSIONを確認してください。
末端がW3.00.00の場合は古いバージョンですので、ファームウェアアップデートをしてください。
Luaスクリプトの実行に関していくつものバグが有ります。

1. ブラウザから実行できるか確認する
 起動時に動くスクリプトなら、ブラウザからも実行できるはずです。
公式チュートリアルだとなぜか、一番最初にやることが起動時に実行になってますが、
正直ハマります。まずはブラウザからLuaスクリプトを叩いて実行できるか確認しましょう。
それで実行できないものはそもそも起動時にも実行できません。
FlashAirでは、実行エラーは出力なしのだんまりになります。

ちなみに、手前味噌ですが、FlashTools Lua EditorのDebug機能を使うと、
具体的に何のエラーが起きているのか知ることができます。

2. CONFIGの記述ミスをしていないか確認する。
 スペルミスをしていませんか?
最終行を空行にしていますか?

3. ファイル書き込みの場合: 差し込んで、10秒待って抜いて、また差し込んでみる
 ファイルはブラウザ上ではリアルタイムに更新されますが、
PCなどからは確認できないことが多いです。
というのも、差込時に読み出し、その後の変化は知らんぷりなためです。
なので、実行が終わった辺りで差し込み直すといいでしょう。
ちなみに、LUA_RUN_SCRIPTは暴走防止等で、起動から実行まで最低5秒くらい待たされます。

4. 通信系の場合: スクリプトの頭に30秒~60秒くらいの待ち時間を入れてみる
 割と見落としがちなのですが、LUA_RUN_SCRIPTはWi-Fi接続が確立する前から
実行が始まります。ので、スクリプト起動後すぐにfa.requestなどの通信をしようとしても、
どうやってもうまく行きません。
ブラウザでは動くのに起動時に動かないの大抵はこれです。

おまけ. fa.pioを叩きまくるとホスト機器と通信不能になります。
 スクリプト内でfa.pioをループで叩き続ける場合は、必ず成功可否をチェックし、
(少なくともスクリプトの頭でチェックし)失敗している場合は無理に叩き続けないようにしましょう。
起動猶予時間を使えば脱出は可能ですが、半分文鎮みたいになります。


参考になれば幸いです。

ほかいろいろ
https://sites.google.com/site/gpsnmeajp/electricmemo/flashair

あわせてこちらもどうぞ。
FlashAirからfa.requestを投げる時の注意
FlashAirでLuaスクリプトを組む時のコツ
fa.spiの挙動(秋月 FlashAir DIP IOボードキットでfa.spiが動かない問題)
#FlashAir をいじっている記録
FlashAir上でLuaスクリプトのエラーを表示する

おすすめ
FlashTools Lua Editor (FTLE)

1 件のコメント:

  1. 公式チュートリアルではここまで細く記載されていないので、flashairの開発初心者にとってかなり参考になります。

    返信削除