CodeZine(コードジン)

特集ページ一覧

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/11/27 00:00

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

目次

プログラムを読んでみよう④ ―― コード送信symcom.c

 アプリケーションの最後は、パソコンへ命令コードを送信するプログラムです。symcom.cの中のSendCode()関数で処理しています。

 パソコンへは、M0x(エム、ゼロ、xは0~F)、0x0d,0x0aという文字列で命令コードを送信するきまりになっています。たとえば、スプーンをたたいたコードが1001なら、これは9に相当するので、送信する文字列は"M09",0x0d,0x0aです。最初のM0は固定値(いつも同じ)なので、その直後に付ける命令コードを数値から数字(文字)に変換するのがここでの主な処理です。

 コンピュータで扱う文字には、それぞれコード(値)が割り当てられています。表1にその一部を示します。表の横軸がコードの上位4ビット、縦軸が下位4ビットです。たとえば大文字のGという文字のコードは0x47で、数字の8と言う文字のコードは0x38です。この対応を利用することで、数値を文字に変換することができます。

 14行目で、命令コードが10未満かどうかの判断をします。10未満であれば0~9ですから、文字'0'(文字コードは0x30)に値を加算することで、対応した文字(コード)が得られます。命令コードが10以上のときは16進数表記に従ってA,B,C...Fの文字に変換する必要があります。そこで18行目のように、まず命令コードから10を引いて、文字'A'(の文字コード)に加算することで対応した16進数文字を得ることができます。

 あとは22行目以降で1文字送信関数を呼びながら1文字ずつ送信します。

表1:ASCIIコード表(一部)
表1:ASCIIコード表(一部)

 次回はいよいよ最終回です。デバイスドライバの説明と、改造例題を行います。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

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

もっと読む

著者プロフィール

  • 舘 伸幸(タチ ノブユキ)

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5