はじめてのFeliCa(3)

| コメント(0) | トラックバック(0)

はじめてのFeliCa(2) からの続きです。

こんにちは、バズー株式会社、開発チームリーダーの清水です。

本エントリーでは FeliCa アプリ開発に必要なことを書いていきます。

※本アプリは、Windows 向け FeliCa 用ライブラリー felicalib と C# を組み合わせて開発します。

felicalib入手先:
http://felicalib.tmurakam.org/

■パソリを接続する

パソリのパッケージついている CD-ROM から「FeliCa ポートソフトウェア」をインストールし、パソリを接続します。

■開発環境を構築する

Visual C# 2008 Express Edition をインストールします。Express Edition は多少の制限があるかわり、無料で使うことができます。

ダウンロード先:
www.microsoft.com/japan/msdn/vstudio/express/

以前の Visual Studio では、Microsoft Platform SDK を別途インストールする必要があったそうなのですが、2008 からは不要です。ちなみに VS2008 も C# も未経験です。

■プロジェクトを新規作成する

・フォームを開きます
・テキストフィールドを2つ置きます(textBox1, textBox2)
・ウェブブラウザを1つ置きます(webBrowser1)
・FelicaLib.cs を追加します
・felicalib.dll を EXE が生成されるディレクトリと同じ場所に置きます

■プログラムを作成する

以下のようなコードを書きます。felicalib はポーリングで FeliCa の情報を取得するので、FeliCa をタッチしたときに何か処理をさせたければ、サンプルのようにタイマーを使う必要があります。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using FelicaLib;
namespace FelicaTest
{
    public partial class Form1 : Form
    {
        private string idm = null;
        private string pmm = null;
        private bool loading = false;
        public Form1()
        {
            InitializeComponent();
        }
        /**
         * フォームロード時に呼ばれる 
         */
        private void Form1_Load(object sender, EventArgs e)
        {
            // タイマー設定
            this.timer1.Interval = 500;
            this.timer1.Enabled = true;
        }
        /**
         * タイマー発火時に呼ばれる
         */
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                using (Felica f = new Felica())
                {
                    // FeliCaポーリング開始
                    f.Polling((int)SystemCode.Any);
                    if (this.idm == null && this.pmm == null)
                    {
                        this.idm = BytesToHexString(f.IDm());
                        this.pmm = BytesToHexString(f.PMm());
                    }
                }
                if (!this.loading)
                {
                    // GET開始
                    this.loading = true;
                    this.textBox1.Text = this.idm;
                    this.textBox2.Text = this.pmm;
                    this.webBrowser1.Navigate(
                        new Uri("http://www.buzoo.jp/sample.php?idm="
                            + idm + "&pmm=" + pmm));
                }
            }
            catch (Exception)
            {
            }
        }
        /**
         * ページロード完了時に呼ばれる
         */
        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            this.idm = null;
            this.pmm = null;
            this.loading = false;
        }
        /**
         * バイナリ配列を文字列に変換する
         */
        private string BytesToHexString(byte[] bytes)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bytes.Length; i++)
            {
                sb.Append(bytes[i].ToString("X2"));
            }
            return sb.ToString();
        }
    }
}

■実行する

実行して、パソリに FeliCa を置くと、FeliCa の IDm と PMm を読み取って、ウェブアプリに投げます。ウェブアプリ側で、IDm と PMm を識別していろいろな処理(例では出退勤を想定)を書けば、非常に簡単に FeliCa アプリを作成できます。

felica_01.jpg

トラックバック(0)

トラックバックURL: http://tech.buzoo.jp/mt4/mt-tb.cgi/60

コメントする

携帯サイト作成のバズー株式会社

名経営者を志す 熱血社長ブログ

浜松町発進!攻めるディレクターブログ

mixiアプリ企画・開発

バズービル写真

セレブスタイル

芝大門スタジオ

キッズスタイル

プライバシーマーク

フィードメーター - 携帯サイト開発を極める!開発チームリーダーのブロ..

あわせて読みたいブログパーツ

カテゴリ

プロフィール

日々めまぐるしい勢いで変わるモバイルビジネスの中心で、開発現場から生の声をお届けします!
CTOを志す人、モバイルを極めたい人必見です!