利用方法・サンプルコード・関数リファレンス

※VC++、VC#、VB・VB.NET・VBAによる開発が可能(VBAはExcel 32bitのみ)

必須ランタイム(VC++のみ):

以下のランタイムをインストールして開発してください。配布される場合には実行するPCごとにランタイムインストールが必要です。

○VC++2005の場合

Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)

Microsoft Visual C++ 2005 SP1 再頒布可能パッケージ (x86)

Microsoft Visual C++ 2005 Service Pack 1 再頒布可能パッケージ ATL のセキュリティ更新プログラム

○VC++2008で開発される方は上記に加えてこちらのランタイムもインストール必要

Microsoft Visual C++ 2008 再頒布可能パッケージ (x86)

Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)

Orange Easy API(社内利用版/非商用)の場合

OrangeEasyAPI(社内利用版/非商用)をご利用の方は開発スタートキットに同梱のCDROMをインストールしてください。インストールするとソリューションファイルが含まれていますのでそちらをご参考頂いた方が便利です。

このAPIは複数リーダライタに対応していません、PC1台にリーダライタを1台だけ接続してください、他のリーダライタも全て外して利用してください

Orange Get NFC IDm UID Easy API(商用利用版)の場合

製品ご購入時のCDROMにソリューションファイルやID取得アプリケーションソースコードもあわせてご参考ください。 

開発スタートキットご購入時の取扱説明書に従って、システム開発を進めてください。

サポート・アップデートなどをご連絡するため、製品ご購入時のCDROMよりユーザー登録をおこなって下さい。

以下記述のコードは”OrangeEasyAPI.dll”を OrangeGetNFCIDmUIDEasyAPI.dll に読み替えて下さい。

目次

1. C++での開発例

(C++/CLI .NETアプリケーションでの開発例ですが、C#、VC++MFCでも利用可能です。)

2. VB・VB.NET・VBAでの開発例

3. C#での開発例

4. 関数リファレンス

5. 利用フローチャート

6. 商用利用版 Orange Get NFC IDm UID Easy APIの場合

【固有IDの利用方法・活用方法】

カードのID番号を読み取り、そのID番号をデータベース側の情報とひもづけ、会員情報や社員情報、読み取り日 時、ポイント管理などを行っているケースも多い。MifareやFeliCaの固有IDはカード製造時にICチップに記録され書き換えができない固有の ID番号である。トレーサビリティと個体識別を目的として、ICチップに書き込まれ同じ番号が流通しないように半導体各社が管理をおこなっている。編集は 不可能であり比較的簡単に利用できることから、応用範囲が広く、このID番号を使ったアプリケーション・システムが広く普及している。

 

1. C++での開発例

(C++/CLI .NETアプリケーションでの開発例ですが、VC++MFCでも利用可能です。)

 

【対象バージョン】

OrangeEasyAPI :v1.100

Microsoft Visual C++: 2005/2008(Express Editionでも可)

※Windows x64(64ビット)では32ビットアプリケーションとして動作します。

【手順】

1. プロジェクトを新規作成する

[ファイル]→[新規作成]→[プロジェクト]の[Visual C++]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する

 2. ファイルを配置する

以下のファイルをプロジェクトのフォルダにコピーする

OrangeEasyAPI.h

OrangeEasyAPI.lib

以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(debugフォルダとreleaseフォルダ)

OrangeEasyAPI.dll

3. DLLをリンクする

[プロジェクト]→[プロパティ]→[リンカ]→[入力]にOrangeEasyAPI.libを追加する 

4. hファイルをプロジェクトに追加する

[プロジェクト]→[既存項目の追加]からOrangeEasyAPI.hをプロジェクトに追加する 

stdafx.hの以下の場所にincludeを追加する。

 // TODO: プログラムに必要な追加ヘッダーをここで参照してください。

#include "OrangeEasyAPI.h"  

5. カードID取得関数を呼び出す

OrangeEasyAPI.hに定義されているGetCardIDを呼び出す 

【サンプルコード】

3.C#での開発例を参考にしてください。

 

2. VBでの開発例

 

【対象バージョン】

OrangeEasyAPI: v1.100

Microsoft Visual Basic.NET:2005/2008(Express Editionでも可)

※Windows x64(64ビット)では32ビットアプリケーションとして動作します。

【手順】

1. プロジェクトを新規作成する

[ファイル]→[新規作成]→[プロジェクト]の[Visual Basic]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する

 2. ファイルを配置する

以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(デフォルトではbin\Releaseとbin\Debug)

OrangeEasyAPI.dll

3. DLLをリンクする

呼び出すクラス内で以下の宣言を記述する

例.

    Declare Function GetCardID Lib "OrangeEasyAPI.dll" (ByRef id As Byte, ByRef length As Integer) As Integer

   

※ほかにも呼び出し方法はあります

4. カードID取得関数を呼び出す

GetCardIDを呼び出す 

【サンプルコード】

・VB.NETの場合

ボタンをクリックした時にICの読取り結果をラベルに表示するサンプルコードです。

フォームにツールボックスからLabelとButtonを貼り付けてください。

※VB6.0以前のバージョンの場合はの場合はサンプルコード内の

result += id(i).ToString("X2") を

result = result & Right("00" & Hex(id(i)), 2) に変更して下さい。

 Public Class Form1

    Declare Function GetCardID Lib "OrangeEasyAPI.dll" (ByRef id As Byte, ByRef length As Integer) As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim id(10) As Byte

        Dim length As Integer

        Dim result As String

        result = ""

        'ICを読取ります

        If GetCardID(id(0), length) = 0 Then

            '読取り成功時にICのIDを1バイトごと読み出します

            Dim i As Integer

            For i = 0 To (length - 1)

                result += id(i).ToString("X2")

            Next

        Else

            '読取り失敗時にメッセージを表示します

            result = "読取りに失敗しました"

        End If

        '結果表示します

        Label1.Text = result

    End Sub

End Class

・VBAの場合

Private Declare Function GetCardID Lib "(OrangeEasAPI.dllがあるフォルダ)\OrangeEasyAPI.dll" (ByRef id As Byte, ByRef length As Integer) As Integer

Private Sub CommandButton1_Click()

   

    Dim id(10) As Byte

    Dim length As Integer

    Dim result As String

    result = ""

   

    'ICを読取ります

    If GetCardID(id(0), length) = 0 Then

   

        '読取り成功時にICのIDを1バイトごと読み出します

        Dim i As Integer

        For i = 0 To (length - 1)

            result = result & Right("00" & Hex(id(i)), 2)

        Next

    Else

   

        '読取り失敗時にメッセージを表示します

        result = "読取りに失敗しました"

    End If

   

    '結果表示します

    Label1.Caption = result   

End Sub

3. C#での開発例

 

 

【対象バージョン】

OrangeEasyAPI: v1.100

Microsoft Visual C#:2005/2008(Express Editionでも可)

※Windows x64(64ビット)では32ビットアプリケーションとして動作します。

【手順】

1. プロジェクトを新規作成する

[ファイル]→[新規作成]→[プロジェクト]の[Visual C#]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する

 2. ファイルを配置する

以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(デフォルトでは bin\Releaseとbin\Debug)

OrangeEasyAPI.dll

3. DLLをリンクする

呼び出すクラス内で以下の宣言を記述する

例.

        [DllImport("OrangeEasyAPI.dll", EntryPoint = "GetCardID", CharSet = CharSet.Ansi)]

        private extern static int GetCardID(ref Byte id, ref IntPtr length);

   

    ※ほかにも呼び出し方法はあります

4. カードID取得関数を呼び出す

GetCardIDを呼び出す 

【サンプルコード】

ボタンをクリックした時にICの読取り結果をラベルに表示するサンプルコードです。

フォームにツールボックスからLabelとButtonを貼り付けてください。

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;    // DllImportに必要

namespace GetCardIDapplication_cs

{

    public partial class Form1 : Form

    {

        [DllImport("OrangeEasyAPI.dll", EntryPoint = "GetCardID", CharSet = CharSet.Ansi)]

        private extern static int GetCardID(ref Byte id, ref IntPtr length);

        public Form1()

        {

            InitializeComponent();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            byte[] byCardID = new byte[10];

            IntPtr length   = new IntPtr();

            String strID    = "";

            // ICを読取ります

            if (GetCardID(ref byCardID[0], ref length) == 0)

            {

                // 読取り成功時にICのIDを1バイトごと読み出します

                for (int i = 0; i < length.ToInt32(); ++i)

                {

                    strID += byCardID[i].ToString("X2");

                }

            }

            else

            {

                // 読取り失敗時にメッセージを表示します

                strID = "読取りに失敗しました。";

            }

            // 結果表示します

            label1.Text = strID;

        }

    }

}

 

4. 関数リファレンス

【対象バージョン】OrangeEasyAPI: v1.100

GetCardID

・関数宣言

LRESULT APIENTRY GetCardID(BYTE* id, int* length);

・引数

id:ID文字列(最大10バイト)

length:文字列長

・返り値

   GET_ID_SUCCESS            = 0;    // 読取成功

   GET_ID_FAILURE            = 1;    // 読取失敗 ※1

   GET_ID_NO_SERVICE         = 2;    // カードサービスエラー        スマートカードサービスが起動していません。

   GET_ID_NO_READERS         = 3;    // リーダー未接続            リーダーが接続されていません。接続してご利用ください。

   GET_ID_NO_CARD            = 4;    // カード未接続              ICカードが接続されていません。または利用できないカードをかざしています。

   GET_ID_REMOVE_TIMEOUT     = 5;    // カード除去待ちタイムアウト     同じカードが100ms以上かざされたままになっています。 ※2

   GET_ID_REMOVE_READERS     = 6;    // リーダー切断エラー          リーダーの切断に失敗しました。

   GET_ID_REMOVE_CARD        = 7;    // カード切断エラー            カードの切断に失敗しました。

   GET_ID_CARD_TIMEOUT       = 8;    // カード待ちタイムアウト        カード接続待機時間1msを超えました。

   GET_ID_COMMAND_ERROR      = 9;    // カードID取得コマンドエラー    ICカードへのコマンドでエラーが発生しました。

   GET_ID_RELEASE_ERROR      = 10;   // カードサービス解放エラー     スマートカードサービスの開放に失敗しました。

※1 GET_ID_FILUREは定義以外のエラー発生時に返されます。

 ※2 GET_ID_REMOVE_TIMEOUTはエラーではなく、読取り成功しています。同じカードがかざされたままである事を通知するものです。置き忘れ防止などの処理の実装にご利用ください。

 ※3 GET_ID_SUCCESS以外が返される場合は、リーダー、カード状態等をご確認ください。それでも解決しない場合はFAQ for ソフトウェア開発をご確認ください。

 

5. 利用フローチャート

OrangeEasyAPIのGetCardIDの返り値に応じて処理を行ってください。

返り値の内容は4.関数リファレンスに記載されています。

 

6. 商用利用版 Orange Get NFC IDm UID Easy APIの場合

上述のOrangeEasyAPI.dll を OrangeGetNFCIDmUIDEasyAPI.dll に変更して下さい。その他ご購入時の取扱説明書に従って、システム開発およびユーザー登録をおこなって下さい。

付属のID取得アプリケーションサンプルソースコードもあわせて参考ください。 

 

 

 

お問い合わせ

APIを利用したい方、APIの機能追加やカスタム開発・ソースコード提供、システムの受託開発などをご希望の方は、株式会社オレンジタグスまでお問い合わせ下さい。    

 

※本サイト記載の社名・製品名・ロゴは各社の商標または登録商標です。

※本サイト記載の文書またはデータ等を無断で複写、複製、転記、転載、ノウハウの使用等を行うことは禁じられております。

Copyright © 2009 Orangetags Inc. All Rights Reserved.