Phidgets RFID開発キット ソースコードを書く on MacOSX
RFID事業部 開発主任 起田 智史 (s-okita@uknet.co.jp)
はじめに
今回はXCodeを利用して実際にソースコードを書いてみようと思います。ハードウェアのインストールは、「Phidgets RFID開発キット インストールガイド on MacOSX」を参考にしてください。
環境
- Mac OSX 10.3.9.x (Panther)
- PhidgetRFID Kit Version2 (現在一般に市販されているもの。基盤にPhidgetRFIDという文字とLEDがついている)
- ruby 1.8.2 (2004-12-25) [powerpc-darwin7.8.0]
- XCode 1.5
ハードウェアの接続
「Phidgets RFID開発キット インストールガイド on MacOSX」を参考に、ライブラリのインストールが終わっている場合は、Phidget RFID開発キットのハードウェアをUSBでPCに接続してください。Windowsのようにハードウェアが接続された事を通知しませんが問題ありません。
XCode 1.5のインストール
Mac OSXでC/C++,Objective-C,Cocoaプログラミングなどをする場合には、Apple拡張されたGCCが必要になります。OSXの標準開発環境はXCodeと呼ばれ、Apple社から無償で提供されています。Googleやアップル・コンピュータ社のサイトで確認してインストールを行ってください。
プロジェクトの作成
Xcodeを起動してメニュー・バーのNew Projectを選択すると以下のようなウィザードが表示されます。今回はコマンドライン版のテストを行うソースコードを書くので、Command Line UtilityのCoreFoundation Toolプロジェクトを選択してください。他のプロジェクトでも問題ありませんが、CoreFoundation Toolプロジェクトを選択すると、ライブラリの設定の手間が省けます。

プロジェクト名と保存先を指定し、Finishボタンを押します。今回はMyPhidgetsRFIDとしました。

ウィザードが終了すると、以下のようなXCodeの画面が表示されます。

Phidgets社のライブラリをプロジェクトに追加する
まずは、以下のようにPhidget社のライブラリを追加します。

フレームワークの選択画面になるので、FrameworksディレクトリからPhidget20.frameworkを選択してAddボタンを押します。

次に幾つか選択が出ますが、変更せずにAddボタンを押します。これでライブラリが追加されます。

ファイル名の変更とソースコードを書く
Phidgets社の提供しているライブラリは、C++で記述されているため、プログラムをするファイルの拡張子が.cであるとXCode上ではコンパイルに失敗します。そこで右クリックをし、Renameを選択してmain.cppに変更します。

ファイル名を変更したら以下のようなソースコードを書きます。今回はサンプルなのでとりあえずCut&Pasteしていただいて、正常に動作が確認できたら、いろいろソースコードを書き換えてみてください。今はとりあえずコンパイルして動作確認する事に専念します。
/*
* デバック用にprintf関数を使っているのでincludeしている
*/
#include
/*
* コマンドラインで動かすのでCoreFoundationフレームワークと
* Phidget20フレームワークをincludeしている。
*/
#include
#include
CPhidgetManagerHandle phidlist = 0;
int something;
/*
* USBハードウェアが接続された事を検知するハンドラ
*/
int gotAttach(CPhidgetManagerHandle phidm, void *, CPhidgetHandle phid) {
char *id, *error;
CPhidget_getDeviceType((CPhidgetHandle)phid,&id);
printf("Device Added: %s\n",id);
return 0;
}
/*
* USBハードウェアが外された事を検知するハンドラ
*/
int gotDetach(CPhidgetManagerHandle phidm, void *, CPhidgetHandle phid) {
char *id;
CPhidget_getDeviceType((CPhidgetHandle )phid,&id);
printf("Device Removed: %s\n",id);
return 0;
}
/*
* プログラム起動用関数
* プログラムは、コマンドラインで起動後Ctrl+Cで終了できる。
* またPhidget製品をUSBに接続したり、外したりするとその度に
* 値がハンドラにより表示される。
*/
int main (int argc, const char * argv[]) {
// 初期化処理
printf("begin initialize\n");
CPhidgetManager_initialize(&phidlist);
// グローバル変数ではじめは数値の0を指定していたが
// 初期化処理で値が変わるのを確認
printf("do initialize:%ld\n", phidlist);
printf("end initialize\n");
// イベント・ハンドラを2つ設定する
printf("begin set handler \n");
CPhidgetManager_set_AttachHandler(phidlist, &gotAttach, &something);
CPhidgetManager_set_DetachHandler(phidlist, &gotDetach, &something);
printf("end set handler \n");
// notificationの設定
CPhidgetManager_setupNotifications(phidlist, CFRunLoopGetCurrent());
// ループのスタート
CFRunLoopRun();
return 0;
}
コンパイルと実行
保存したら、以下の画面のようになると思います。ここのツール・バーに表示されている。Buildアイコンを押すとコンパイルが行えます。またBuild and Goアイコンを押すとコンパイル後実行を行えます。
実際にBuild and Goアイコンを押してみます。

実行すると、以下のようなRun Logウィンドウが表示されます。このソースコードでは、Phidgets RFID 開発キットのタグ認識は出来ませんが、ハードウェアが接続されている事が確認できると思います。また、右上のTerminateアイコンを押すことでプログラムを終了する事ができます。

まとめ
Mac OSX 10.3環境で、Phidget RFID開発キットの簡単なプログラミングをしてみました。まだRFIDタグの認識は出来ませんが、プログラミングは少し筒進めていくのが定石です。次回は、このプログラムを実際にコマンドラインからも実行してみたいと思います。
