ady.at.infoseek.co.jp







赤外線で遊ぶ







カシオペアA-51の赤外線とSH53の赤外線で通信実験成功しました。
SH53 Maniaxの情報によると、SH53は504iと同じIrMC1.1、OBEX対応だそうです。
「OBEX=Object Exchange Protocol」とは、通信手段に関係なく通信できる手順を決めた仕様です。

なんだか分かりませんが、なんか役に立つかもしれないのでいじりましょう!
OBEXで検索をかけまくった結果、http://www.pocketpcdn.com/articles/obex.html
にほぼ完全な(OnButton関数などにコピペすれば動く)ソースコードがあります。

ただし、ちょっと違反している部分があって、
*((unsigned short *)&dataBuff[1]) = htons((unsigned short)7);
が、コンパイルエラーを出します。

WindowsCE FANの開発初心者掲示板で質問したところ、
>dataBuff[1] = (BYTE)(7 >> 8);   // or 0x00
>dataBuff[2] = (BYTE)(7 & 0xFF); // or 0x07
このように訂正すればいいと教わりました。

あとはfopen()をCreateFile()にしたり、定数もいろいろ変更する必要がありますが、
構造体やソケット関数はそのままでOKです。最新の携帯電話と連絡できるのは感動もんです。








irda_test2.exeの画面説明








起動直後。MFCそのまんまです。
ファイル選択ボタンを押して送信するファイルを選択します。
この例で選択しているサンプル.jpgは、
Windows2000のMy Pictureフォルダにあったやつです。
送信開始ボタンを押す前に、携帯電話が受信状態になるように操作します。
SH53だと「ユーザーショートカット→赤外線通信→赤外線受信」です。

(irda_test2.exeはカシオペアをクライアントモードにしているので、
 携帯電話をサーバーモードになるようにする。)
送信が開始されました。
あんまり小さいファイルだと、
以下のように送信バイト数を表示する前に
ファイル全体を送信し終わる時があるので注意。
送信したバイト数を表示してますが、送信が終了してもこの表示のままです。
そのときは、(これまたSH53での例ですが)携帯が「ピロピロピロ」と鳴り、
「xxxxをデータフォルダに保存しますか(y/n)?」などと聞いてくるので、
急いで携帯を操作してすぐまたカシオペアの赤外線ポートにかざしてください。
なんだか携帯電話が後処理のデータをカシオペアに送っているみたいです。
うまくいけばirda_test2.exeが「完了しました」と表示します。

OBEXは携帯電話同士の通信を前提にしているみたいで、不便だけど納得するしかありません。
SH53に画像が転送されました。
拡張子をvcfに変更すれば、vCardデータも送れます。








irda_test2.exeのダウンロード
irda_test2.exe(498KB)

SH53以外の携帯電話で通信が成功したら、
報告してもらえると嬉しいです。


※画面キャプチャーには伊藤栄一郎氏の「CaptCE」を使用してます。