== C# での利用方法
PInvoke 経由で felicalib.dll を使用するライブラリを添付してあります。
src/CSharp ディレクトリにある!FelicaLib.cs ファイルをプロジェクトに追加して利用してください。
felicalib.dll を実行プログラムを同じディレクトリにおいて実行してください。
以下にサンプルを示します。これは nanaco の履歴をダンプするもの。
{{{
using System;
using System.Collections.Generic;
using System.Text;
using FelicaLib;
namespace FelicaLib
{
public class Nanaco
{
public static void Main()
{
try
{
using (Felica f = new Felica())
{
readNanaco(f);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private static void readNanaco(Felica f)
{
f.Polling((int)SystemCode.Common);
byte[] data = f.ReadWithoutEncryption(0x558b, 0);
if (data == null)
{
throw new Exception("nanaco ID が読み取れません");
}
Console.Write("Nanaco ID = ");
for (int i = 0; i < 8; i++) {
Console.Write(data[i].ToString("X2"));
}
Console.Write("\n");
for (int i = 0; ; i++)
{
data = f.ReadWithoutEncryption(0x564f, i);
if (data == null) break;
switch (data[0])
{
case 0x47:
default:
Console.Write("支払 ");
break;
case 0x6f:
Console.Write("チャージ ");
break;
}
int value = (data[9] << 24) + (data[10] << 16) + (data[11] << 8) + data[12];
int year = (value >> 21) + 2000;
int month = (value >> 17) & 0xf;
int date = (value >> 12) & 0x1f;
int hour = (value >> 6) & 0x3f;
int min = value & 0x3f;
Console.Write("{0}/{1:D2}/{2:D2} {3:D2}:{4:D2}", year, month, date, hour, min);
value = (data[1] << 24) + (data[2] << 16) + (data[3] << 8) + data[4];
Console.Write(" 金額 {0,6}円", value);
value = (data[5] << 24) + (data[6] << 16) + (data[7] << 8) + data[8];
Console.Write(" 残高 {0,6}円", value);
value = (data[13] << 8) + data[14];
Console.WriteLine(" 連番 {0}", value);
}
}
}
}
}}}