2016年03月17日

Felicaで既知のサービスコードとブロック番号に書かれている文字列を読み取る(VB.net)



Felicaでちょっと遊んでいるのですが、とあるカードには、とあるサービスコードのとあるブロック番号に
とある文字列が書き込まれていて、それを読みだすといろいろ便利なことが出来そうです。
ということで、ここのページで公開されている「CFelicaLib.vb」に機能を追加しました。

    '=============================================
    '【関 数 名】read_string
    '【第1引数】[in]  Integer  サービスコード
    '【第2引数】[in]  Byte  ブロック番号
    '【戻 り 値】[out] String   文字列
    '---------------------------------------------
    ' 既知のサービスコードとブロック番号から文字列を読み取る
    '=============================================
    Public Function read_string(ByVal serviceCode As Integer, ByVal address As Byte) As String
        Try
            '------------
            ' エラー処理
            '------------
            If f_ptr = IntPtr.Zero Then
                Return ""
            End If

            '----------
            ' 変数定義
            '----------
            Dim rStr As String
            Dim buf(15) As UInt8

            '-------------------------
            ' 変数bufのアドレスを取得
            '-------------------------
            Dim gch As GCHandle = GCHandle.Alloc(buf, GCHandleType.Pinned)
            Dim b As IntPtr = gch.AddrOfPinnedObject().ToInt32

            '-------------
            ' 指定したサービス、アドレスから読み取り
            '-------------
            felica_read_without_encryption02(f_ptr, serviceCode, 0, address, b)
            rStr = System.Text.Encoding.ASCII.GetString(buf) 'HexToAsc(buf)

            '--------------
            ' メモリの解放
            '--------------
            gch.Free()

            '------------
            ' 結果を返す
            '------------
            Return rStr
        Catch ex As Exception
            MessageBox.Show(ex.Message, "read_str()")
            Return ""
        End Try
    End Function
 

作者の白執事様に感謝します。
posted by MON at 21:26| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
【今是昨非】http://nomulabo.com/