はじめての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 アプリを作成できます。
















コメントする