SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

たった5つのルールではじめるC言語開発

マジカルボックスのプログラムを読み解く 1


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (44.7 KB)

ソースプログラムを手に入れよう

 では実際のプログラムを見ていきましょう。ソースプログラム一式はフォルダごと圧縮したものをここから (リンク)ダウンロードしてください。実行ファイル形式になっています。これまで同様、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()という、エラー表示をする関数を呼びます。

次のページ
プログラムを読んでみよう② ―― 間隔計測masure.c

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
たった5つのルールではじめるC言語開発連載記事一覧

もっと読む

この記事の著者

舘 伸幸(タチ ノブユキ)

NECマイクロシステム株式会社 勤務NPO法人SESSAME 所属開発ツールのソフトウェア開発を経て組込みソフトウェア開発に従事。プライベートにも半田ごては手放さない。2006年からSESSAME に参加。若い世代に物を作る楽しさを伝えていきたい。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3732 2009/03/26 17:23

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング