忍者ブログ

slack diary

鉄道模型シミュレーター(VRM)を紹介するホームページ「CaldiaのVRM Room」の更新情報と、Caldia本人の日常ぐだぐだ日記。

VRMNXをスマホから操作可能にしてみた

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

VRMNXをスマホから操作可能にしてみた

先日行われたVRMNXオンライン運転会で「VRMNXファイル連携システム」を使用した新しい機能「VRMNX FLSリモコン」をお披露目しました。




今までのネットワークコントローラはC#.NETで作成した「クライアントアプリケーション」のexeファイルを各利用者に配り、IPアドレスや設定を伝えて操作していましたが、これをHTTPサーバとWebブラウザの「Webアプリ」として新実装したものになります。


仕組みはごく単純なもので、HTMLのFormから列車IDと速度や命令をPOSTして、それをPythonのHTTPサーバ(cgi-bin)で受け取り、ログの代わりに命令ファイルを既存の「VRMNXファイル連携システム」に渡すようにしています。
exe版と比べると極めてタイムラグの小さいUDPからHTTP(TCP)のPOST処理になったため、操作のタイムラグが体感で数倍遅延する感じがしますが、exeのダウンロードや設定が不要で、フルスクリーンでリモートレイアウトを見ながら手元で操作できる点が最大の特徴です。



工夫した点としては、HTTPサーバのURLをスマホで打つのが面倒なので、それぞれの列車に対応したリモコンのURLをQRコードで読み込んでもらうようにしたこと、Pythonの簡易HTTPサーバは単一セッションしか扱えないようだったので、操作可能な列車分のサーバをポート別に複数起動させて同時運転できるようにしたことでしょうか。

地味にPythonの実装コードよりもデザインレイアウトのスタイルシートの調整に時間がかかりました。(汗)
久しぶりにHTMLとCSSを書いたのですがたった数年でHTML5(という呼称)が時代遅れ(!)とか書かれていたり、Web界隈はホントに流れが早いですね・・・。


今は「基礎実装版」あるいは「概念実証機」というか、とりあえず最低限スマホで動くようにしたものです。
ゆくゆくはnginxなど真っ当なWebサーバのエンジン上でセキュリティも完備して実装し、レイアウト制御盤や、JavaScript+Ajaxでの非同期(非遷移)制御、サーバ側の情報同期など、色々やってみたいことがあります。
特にHTTPでは未だUDPの扱いが限定的のため、WebTransportやQUICあたりの技術も勉強しながら、よりリアルタイムで便利な制御を目指したいと思います。
相変わらず仕事忙しいのでもうちょい先になりそうですが、落ち着いたらコードをgithubにアップ予定です。
PR

コメント

最新コメント

[05/30 Caldia]
[05/19 C-PON]
[10/03 vrmkyobuilding]
[05/10 Caldia]
[05/04 USO800鉄道]