デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・鉄道模型をスマホで簡単制御!国産で革新的なコマンドステーション DSair2はこちらから。

2019年02月10日

DSbasic over DSair2 その3

DSbasicに、ひたすらハマっております。スマホで、自動運転や運転支援機能をBASICで全部実装できるものになるので(私のソフトの実装の手間も省けて一石二鳥!)、がんばって3連休も休み無しでがんばっております。

今日は、以下の機能を実装しました。

・getacc関数を追加。どのポイントが切り替わっているか、アドレスを指定すると教えてくれる関数。
・BASIC関連ボタンをアイコンに変更。位置もTVの下でAlignを真ん中に合わせるように調整
・BASIC画面では、USBスロットル向けのキーボード入力機能を無効化
・自動繰り返し実行ボタン(機能)を追加。

DSbasic_4.png

スケッチ&Webappは以下です。

DSairFirmware_r2j_TEST9.zip

■自動繰り返し実行ボタンの使い方

繰り返し、BASICプログラムを実行します。if文で、条件が合ったとき、DCCのポイントを動かしたり、ファンクションを動かしたり出来ます。BASIC内で、FOR文やWHILE文でやってもいいのですが、繰り返し自動実行する方が実装はしやすいケースも多いです。

ただし変数は全部初期化されてしまうので、static的に使う方法があるのかは今後調べます。wwwbasicは、結構変わった実装(BASICをJavaScriptに変換して実行する何とランタイム変換方式)でして、細かいところがまだ把握できてません。

■getacc関数

引数は、ポイントのアドレス(DCCの場合は1-2044)を指定すると、0か1を返します。0=分岐(div,赤)、1=直進(str,緑)です。
つまり、現状のポイント状態を見て、切り替えるような機能をBASICで実装し、上記の自動繰り返し実行ボタンを有効にすれば、運転しながら、BASICで作ったソフトが状況を見ながら、支援してくれる、ポイント操作をフォローしてくれる、といったことができます。

使い方は、以下の通りです。

・If文と使う
if getacc(1)=1 then
〜やりたい処理〜
end if

・変数に値を入れる
point1=getacc(1)

■残りtodo

・S88状態取得関数の追加
・連続動作すると重くなる?現象の分析と対策
・サンプルの増強
・BASICの記載方法例の拡充
posted by yaasan at 19:58 | Comment(0) | 鉄道模型
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。