既存プログラムのリモート化
2015年9月24日


 今回は既存のロビのプログラムのリモート化やプログラムの変更方法について解説します。
 リモート接続用プログラムで提供しているからリモート対応ロビプログラムにある標準プログラムのリモート対応.txtに書かれている手順で直接プログラムを変更してリモート対応する事ができます。
 しかし一度テキストファイル(ソースプログラム)に変更してそれをテキストエディターで修正する方法でやってみます。
 今回はロビのジャンケンプログラム(ランダム\186,187.RM4)を例に変更方法説明します。
 またテキストエディターとしてWindows標準のメモ帳を使用しますが違うテキストエディターをお使いの方はそちらでも構いません。

 ロビのプログラムはほとんどがソース形式で書かれていますがjump命令の飛び先がプログラムファイルのバイトアドレスで書かれています。



 そのためプログラムに命令を挿入したり変更を加えるとこの飛び先のアドレスがずれてしまい実行するとロビが止まってしまいます。



 そこでロビモーションエディター(Rev 2.50以降)のアドレス調整ボタンでこのアドレスをブロック名に変換します。
 この時、ファイルの種類をプログラムファイルにして「プログラムのジャンプ先をブロック名に変換する」に必ずチェックを付けてください。



 ジャンプ先のアドレスをそのアドレスのブロック名に変換してテキストファイルに書出します。
 ファイル名は元のプログラム名と同じで拡張子をTXTに変更します。
 このファイルを開くとテキストファイルに関連付けられているプログラム(通常はメモ帳)が起動されます。
 このファイルは飛び先のアドレスが変わっても構わないので自由に命令を挿入したり削除する事ができます。



 音声認識をしている部分にFlashAirなどのリモート接続による命令の読込み処理を追加する方法を説明します。
 メモ帳で先程変換したテキストファイルを開きます。
 リモートファイル読込み処理を開きます。

 リモートファイル読込み処理部分をコピーアンドペーストでメモ帳に貼り付けます。
 挿入する場所はブロックとブロックの間ならどこでも構いません。
 後で修正する時に見つけやすい場所にしておきます。
 ただし前のブロックはjump命令(無条件ジャンプ)で終わっている必要があります。



 ここでは音声認識処理の後(矢印)に貼り付けています。



 音声認識ができなかった時にリモートファイル読込み処理部に飛ぶように飛び先を変更します。
 音声認識処理が完了?ブロックで完了していない場合(calc文の外)の飛び先を音声認識開始ブロックからリモートファイル読込み処理ブロックに変更します。
 何も聞き取れなかったか?ブロックで聞き取れていない場合(calc文の中)の飛び先を音声認識開始ブロックからリモートファイル読込み処理ブロックに変更します。



 リモートファイル読込み処理部の飛び先を変更します。
 直接命令チェックブロックで直接命令がない場合(calc文の中)の飛び先を「音声認識開始のブロック」から実際の音声認識開始ブロック名に変更します。
 リモートファイル読込み処理部の飛び先を「音声認識の後のブロック」から何も聞き取れなかったか?ブロックの聞き取れた場合(calc文の外)と同じ飛び先に変更します。

 再びロビモーションエディターのアドレス調整ボタンを押して飛び先のブロック名を実際のアドレスに変換します。



 ファイルの種類をテキストファイルにしてして変更したテキストファイル開いてください(この時「プログラムのジャンプ先をブロック名に変換する」はチェックはなくて構いません)
 オリジナルのプログラムが同一フォルダーに存在する場合は書き換えられるので必要に応じてオリジナルプログラムはバックアップを取って置いてください。



 オリジナルプログラムの拡張方法をジャンケンプログラムにテレビリモコン操作の追加を例にとってを説明します。
 メモ帳で先程変換したテキストファイルを開きます。
 テレビリモコン操作処理を開きます。
 リモートファイル読込みと同じ操作で先程作成したテキストファイルに貼り付けます。
 貼り付ける場所はどこでも構いませんがリモートファイル読込み処理の後に追加します。



 テレビリモコン操作処理にジャンプするようにオリジナルプログラムの飛び先を変更します。
 グチョキパーの各アクションプログラムを実行した後の飛び先を対応するテレビボタンのブロックのブロック名に変更します。



 次にテレビリモコン操作処理からの戻り先を変更します。
 元々のグチョキパーの各アクションプログラムを実行した後の飛び先に変更します。

 これでリモコン信号をテレビに送信するようになりました。
 めざましジャンケンプログラムはこの他、音声認識やリモートによる応答に対して勝ち負けのアクションを入替えています。
 これはロビと自分が対戦している訳でなく今回のジャンケンの結果をロビに伝えるという意味合いしているためです。
 またあいこによる再戦はないので終了の場合と同じ飛び先に変更しています。

 プログラムとテキストファイルを下記URL(リモート対応)にアップしていますので参考にしてください。

  mzj.zip(めざましジャンケン)

 なおこのプログラムでリモコン操作をするにはロビのリモコン設定を以下のように設定する必要があります。
  チャンネルの変更をテレビリモコンの青ボタン
  音量アップをテレビリモコンの赤ボタン
  音量ダウンをテレビリモコンの緑ボタン
 リモコン操作の設定方法は週刊ロビの69号の組み立てガイドを参照してください。

 また実際にプログラムを動かすにはリモート接続用プログラムが必要です。


 実際にこのプログラムを動かした動画です。

     

 わざわざロビのリモコン機能を使わなくてもロビとジャンケンをしてロビが出したのをリモコンで送信すればいい訳ですがそこはロビにテレビ操作もやらせるという事で是非試してみてください。

 なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。
 必ずオリジナルのSDカードのバックアップは取っておいてください。
 問題があったらオリジナルのSDカードに戻してください。

目次に戻る