「VS-WRC003LV SDK」は、ロボットのCPUボード「VS-WRC003LV」をPCから通信制御するライブラリです。対応開発環境はMicrosoft Visual C++で、CPUボードの制御は本ライブラリの関数からメモリマップを読み書きし、「モータの駆動」「センサ情報の読み込み」などを行って操作します。
ライブラリに備わっている関数の概要は以下の通りです。
CPUボードと通信を開始します。戻り値は、正しく通信を開始できれば1、CPUボードが見つからない・他のプログラムと既に通信しているなどにより通信を開始できなければ0を返します。
RTコンポーネントの起動時などに実行してください。
CPUボードとBluetoothによる通信を開始します。この関数を使用する場合、ロボット本体にBluetooth通信モジュール「VS-BT003」を拡張する必要があります。引数は、'unsigned int port'にPCが認識しているVS-BT003のシリアルポート(COM)番号を与えます。戻り値は、正しく通信を開始できれば1、CPUボードが見つからない・他のプログラムと既に通信しているなどにより通信を開始できなければ0を返します。
RTコンポーネントの起動時などに実行してください。
CPUボードとの通信を終了します。RTモジュールの終了時に必ず実行してください。
CPUボードから読み込むメモリマップのアドレスを指定します。実際に読み込みを行なうのはReadExecute関数を実行したときです。 引数は、'int staddr'に読み込みを開始するメモリマップアドレス、'int sz'に読み込むメモリサイズ(byte単位)を与えます。戻り値は、Connect関数を実行していない、またはメモリマップの範囲外のアドレスを指定した場合は0、それ以外の倍は1を返します。
メモリマップのアドレス概要は、「メモリマップの概要」を参照してください。
ReadMemMap関数で指定したアドレスをCPUボードから読み込み、ライブラリ側のメモリマップ情報を更新します。実際に読み込まれたメモリマップの数値を使う場合は、後述の「メモリマップの読み込み」を参照してください。
CPUボードのメモリマップに書き込むデータをセットします。実際に書き込みを行なうのはWriteExecute関数を実行したときです。引数は、'int staddr'にはデータを書き込むアドレス、'BYTE data'には、書き込む数値(byte単位)を、それぞれ与えます。
戻り値は、Connect関数を実行していない、またはメモリマップの範囲外のアドレスを指定した場合は0、それ以外の場合は1を返します。
2byteの連続したメモリブロックに数値を書き込む場合は、上位バイト、下位バイトごとに分けて2回関数を実行してください。またCPUボードのバイトオーダーはビッグエンディアンのため、番号の小さい側のアドレスから上位バイトを割り当ててください。
WriteMemMap関数で指定したアドレスをCPUボードから読み込み、ライブラリ側のメモリマップ情報を更新します。引数は、'int flash_flg'には、CPUボードのROMに、現在書き込んだデータをFlashさせて、電源を切っても記録させるかどうかのフラグを指定します。引数がTRUE(1)の場合Flashする、FALSE(0)の場合Flashしないという動作になります。
戻り値は、Connect関数を実行していない、またはメモリマップの範囲外のアドレスを指定した場合は0、それ以外の場合は1を返します。
メモリマップの数値をプログラムで利用する場合は、ライブラリに用意されたメモリマップ用のグローバル変数を読み込みます。ただし、メモリブロックにはアドレスごとにサイズ(1byte、2byte)や符号の有無の違いがあるため、専用のマクロ関数を利用して読み込むと正しい数値を取得しやすくなります。それぞれの引数には、読み込むアドレスを直接数値で入力してください。
CPUボードのメモリマップは下記の資料の通りです。メモリマップは合計128byteで、サイズや符号が混在しています。アドレスによっては、内容を書き換えることでCPUボードの動作が変化する場合があります。もしCPUボードの状態を元に戻せなくなったら、BeautoBuilder2などからファームウェアを書き直してください。