デジタル鉄道模型フォーラムのご案内:
DCCやメルクリンなどのデジタル鉄道模型を楽しむ方が集まって、様々な話題でコミュニケーションできる場です。ぜひご登録ください!登録・利用は無料です。

2018年05月06日

DSairアプリの作り方

DSairアプリの、一部を抜き出して、自作できるような形に大幅にシェイプアップしました。HTMLやJavaScriptを本気で勉強する勇気のある方、経験のある方以外には一切お勧めしません。

このアプリの作り方に関するサポートは、メールで私に個別にするのはご遠慮ください。代わりに、デジタル鉄道模型フォーラムにサポートスレッドを立てて問題ありませんので、みんなで解決しましょう。暇なときには私もコメントは出します。

■DSairアプリのサンプル

SD_WLAN(simple).zip

DSアプリのサブセット軽量版で、ほとんど中身を削りすぎて、ただ動くだけの内容です。自分で作り込むには良い内容だとは思います。

1700行を200行まで削ってあります。外部に置いたファイルも根こそぎ削っています。

■APIについて

HTTPのGETコマンドを使って、命令をArduino側にFlashAir経由で出します。この際に、共有メモリ機能を活用しています。

アドレス0〜64までの64バイト分に、ASCIIで渡します。DesktopStationSoftwareと一緒にしたかったのですが、長くなりすぎていろいろ困ったので、短縮命令を使ってます。

PW() 電源ON/OFF(setPower)
SP() 速度指定(setLocoSpeed)
DI() 進行方向指定(setLocoDirection)
FN() ファンクション指定(setLocoFunction)
TO() アクセサリ指定(setTurnout)

引数の中は、wikiに掲載している通信仕様に準拠しています。

たとえば、電源ONのコマンドは、以下のURLをGETコマンドで出すことで、実現します。

http://flashair/command.cgi?op=131&ADDR=0&LEN=64&DATA=PW(1)

DCCアドレス3に、速度ステップ127で、600(1023が最大値)で走行という指令は以下のURLを指定します。

http://flashair/command.cgi?op=131&ADDR=0&LEN=64&DATA=SP(49155,600,2)

こんな感じで、URLを直接操作して、コマンドを出す方式になっています。いわゆるWeb APIみたいなものです。

■ List.htmの中身

scriptタグに囲われた部分がJavaScriptの部分で、jQuery, jQueryUIを使っています。ここで、画面状態の変更や、ボタンなどを押されたときの処理を書いていきます。jQueryUIではなく、OnsenUIなどの、異なるUIエンジンを使っても良いです。この辺は好みです。

bodyタグに囲われた部分は、HTMLの大まかな画面デザインを記載する部分です。

この他に、スタイルシートや、JavaScriptの部分を別ファイル化するなどの方法がありますが、混乱するので、慣れた後に自分で調べてください。

基本は、何か押された・操作された→コマンドを出す、という単純な物ですが、メーターを出したり、表示や処理をいろいろ途中に入れて、それっぽく実現しています。

---------------------------------------------

この説明は、模型は特に関係なく、Webエンジニアで言うところの、フロントエンドアプリ開発の内容になってます。私は、フロントエンドアプリについては、ぶっちゃけネットの資料を見て最近、覚えただけの独学なので、作法が全く分かっていません。

いろいろ、プロから見ると突っ込みどころ満載と思いますが、組み込み屋目線で勉強しながら実装を進めていきたいと思います。
posted by yaasan at 13:11 | Comment(1) | 鉄道模型

DSairの英語紹介ビデオ&アプリ更新予定

オーストラリアのJohnさんに、DSairの紹介ビデオを撮って頂きました。ご協力ありがとうございます。
自動字幕生成をONにしたので、英語で字幕を表示してくれます。もちろん、機械翻訳で日本語表示にも出来ます。

紹介1(画面説明):


紹介2(前後運転操作):


紹介3(ファンクション):


----------------------------

次のアップデートでダブルスリップと、信号機をアクセサリ操作画面に追加します。

webapp_r0r.png
posted by yaasan at 10:36 | Comment(0) | 鉄道模型