ソースプログラムを手に入れよう
では実際のプログラムを見ていきましょう。ソースプログラム一式はフォルダごと圧縮したものをここから (リンク)ダウンロードしてください。実行ファイル形式になっています。これまで同様、D:\mspoon に展開したとして以下説明を進めます。ファイル実行すると展開されて以下のようなフォルダ構成ができあがります。
D:\mspoon +-magbox +- apl +- com +- drv
フォルダmagboxが、開発環境のルートです。ここにはワークスペースファイル5rules.prw、5rules.prjや、Appliletの保存ファイル5rules.prxがあります。
その下には3つのフォルダがあり、aplは構造図でのアプリケーションに相当するファイル(ソフトウェア部品)があります。comには共通ヘッダファイルがあります。ここにはプログラム全体で共通に使う#define設定などが記述してあります。
drvはデバイスドライバです。Appliletが生成したものを元に、マジカルボックス用に構造図にあるソフトウェア部品を追加しています。
以下、内容の説明を行いますが、記事内にリストは掲載しません。別途エディタソフトなどで対象ファイルを開いて読んでください。その際、行番号を表示できるエディタだとより読みやすいです。
プログラムを読んでみよう① ―― まずはmain.cから
main()では、全体の処理の流れを記述しています。まず、全体は14行目のwhile()文で無限ループになっています。これにより永遠に処理が繰り返されます。15行目からが一連の処理で、まずLEDを全消灯します。17行目で呼んでいるMeasureIntervals()が、最初4回スプーンを打つ際の間隔計測を行う処理です。途中でスプーン打ちが途切れるなどの異常があると、エラーを返すようになっています。これは19行目のif文で判断しています。エラーがなければ20行目でSampleHits()を呼びます。この関数は命令コードのサンプリングを行う処理です。ここでも異常があった場合はエラーが返ります。正常にコードが取得できた場合は、22行目でSendCode()を呼んでパソコンに命令を送信します。その後1秒待って、再び同じ処理を繰り返します。
途中でエラーがあった場合は、26行目や30行目に処理がいって、DispError()という、エラー表示をする関数を呼びます。