ロボットと共に

Life with Robot

C#とFelica(NFC)でSuicaを読み込んでみる

はじめに

  今回は、SuicaPASMOEdyなどに使われている非接触ICカードリーダーをC#で試して見たいと思います。

Felicaとは

  Felicaとは、Wikipediaさんいわく、「ソニーが開発した非接触型ICカード」ということでSONYさんが開発したものということですが、FelicaNFCは何が違うの?ということで、そこはSONYさんが解説してくれていました。NFCとFeliCaの関係ということで、SONYさんでは、「NFC-FとFeliCaは同じ無線通信技術であると同時に、FeliCaNFC-Fというオープン規格の上にカードOSを加えたものと表現することができる」とのことです。シンプルな話、Felicaは規格化されたプロトコルで、NFCFelicaなどが使える技術という解釈で良いのではないかと感じます。しかし、Felicaは日本では同じみですが、海外だと弱い感じですねw

Felicaリーダーデバイス

  次に、ICカードなどを読み込むためのFelicaリーダーはAmazonなどでも直ぐ3000円程度で入手できます。実は、このリーダーより安リーダーがあります。それは楽天Edyリーダーだと2000円程度で入手できます。噂だと楽天Edyリーダーなど廉価デバイスのRC-S360/Sは来年くらいには製造終了するとか!?

ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380

ソニー SONY 非接触ICカードリーダー/ライター PaSoRi RC-S380

 

C#Felica(NFC)で読み込むに

 では、本題のC#FelicaSuicaなど読み込むには上記のFelicaリーダーデバイスを購入し、下記よりドライバーなどをインストーラします。

次に、C#Felicaを読む込むには、こちらのライブラリを利用する方法があります。

  1. SDK for NFC(商用利用の有料版 おそらく10万ちょいくらいかと...)
  2. SDK for NFC Starter Kit(開発・評価用の無償版)
  3. felicalib(有志によるBSDライセンスのライブラリ)

があります。どれが良いかといいますと、どれも変わらない気がします。

SDK for NFCfelicalibは、もともとはC++ベースでしたがC#のサンプルも展開されています。しかし、SDK for NFC Starter KitのC#サンプルはよくわからない...ということで有志がいい感じにまとめたライブラリ「NfcStarterKitWrap」があります。

NfcStarterKitWrapのC#サンプ

github.com

felicalibC#サンプル

github.com

C#Felica(NFC)でSuicaを読み込んでみる

 サンプルソースを参考に、SDK for NFC Starter Kitラッパーと有志の方が作成したfelicalibを活用して、それぞれ同じような感じでC#Suicaを読み込んでみたいと思います。今回はSuicaなどの領域であるシステムコード(0003)、乗降履歴情報であるサービスコード(090F)の情報を読み込むサンプルを作成してみました。これで残高などの履歴が20個分閲覧できます。
他のSuicaの情報を読み出したい方は、下記のサイバネ規格をご参照下さい。また、同じような感じでnanacoEdyなどもサービスコードとシステムコードを指定すればデータが取得できるはずです。

では、実際にコーディングしてみたサンプルソースが以下のものです。こちらは上記2つのgitよりライブラリを活用して作成したもので、参照追加で「FelicaLib」「NfcStarterKitWrap」を入れなければいけません。

最後に

 サンプルソースコードは、あくまでも参考としてご利用下さい。また、各種ライブラリのライセンスにも目を通して、ご利用下さい。
ご利用した方は、コメント頂けると個人的に励みになります。