忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


2024/11/23 13:52 |
SONY RC-S320 非接触ICカードリーダ

ヨドバシでフラフラとデジタルグッズをながめに行ったときに、チラッと面白そうなものを見つけた。
PaSoRiである。
ttp://www.sony.co.jp/Products/felica/pcrw/

フェリカカードが読める、USB接続のカードリーダである。
簡単に言うと、スイカとかナナコとかエディとかカードの、中身が読める一品である。

そんなもんの中身を読んでも、普通の人は多分あんまり楽しくない。
せいぜい、いつ、いくら利用したかがわかる一覧を見るぐらいだろうか。
それも別にPCで見なくても、大抵はお店で見られたりするから、あんまいらんだろ。

しかし、DLLを使って、自分で中身を読むというのは、技術的には楽しそーだ。

たまたま会社にころがっていた同商品を使って、カードの中身を読んでみる。
仕事?なにそれ?

拍手

先人が、既に便利なものを作り上げてた。

ttp://felicalib.tmurakam.org/

これを使えば、C#で簡単に読み込めた。
上のURLからダウンロードできるクラス(.cs)を組み込めば、それだけでもうほとんど完成。

ソースを書いてみる。
idmを読んで、pmmを読んで、1ブロックを読み出すソース。
pmmは、何に使うものなのか知らないけど。
1ブロック読み出しのReadWithoutEncryption()の第一引数、ここにはカードのサービスコードを指定する。
EDYは0x1317、スイカは0x090fなど、カードによって決まってるみたい。
会社にこれまた転がっていた、適当なフェリカカードは、サービスコードがわからんくて、読めなかった。
これが違ってると、nullが返る。
サービスコードが分からない場合は、力技で、0x0000~0xFFFFまでくるくる回して、null以外が返るのを待つようにすれば、探し当てられるかも。
0xffffまでであるという保証はないんかもしれんが。

ポーリングのところで、カードが無かったり、読めなかったら例外に飛ぶみたい。
カードがおかしいのか、カードが無いのかの判断は、いまのとこ出来ないくさい。


        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                using (FelicaLib.Felica f = new FelicaLib.Felica())
                {
                    f.Polling((int)FelicaLib.SystemCode.Common);


                    //Idmの読込
                    byte[] a = new byte[8];
                    a = f.IDm();

                    //pmmの取得
                    byte[] b = new byte[8];
                    b = f.PMm();

                    //1ブロック読込
                    c = f.ReadWithoutEncryption((int)FelicaLib.ServiceCode.Edy, 0);
                    if (c != null)
                    {
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }


2008/05/28 21:02 | Comments(0) | TrackBack() | デジタル関係

トラックバック

トラックバックURL:

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<エステに行ってきた。 | HOME | スズキ4巻とザイツから見るビバルディの性格について>>
忍者ブログ[PR]