利用方法、サンプルコード・関数リファレンス(Orange Pro Muzu API)
※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 Pro Muzu API
製品ご購入時のCDROMにソリューションファイルやアプリケーションソースコードもあわせてご参考ください。
サポート・アップデートなどをご連絡するため、製品ご購入時のCDROMよりユーザー登録をおこなって下さい。
目次
1. C++での開発例
3. C#での開発例
4. 関数リファレンス
5. 利用フローチャート
1. C++での開発例
(C++/CLI .NETアプリケーションでの開発例ですが、VC++MFCでも利用可能です。)
※ libファイル、hファイルについてご不明な場合は株式会社オレンジタグスまでお問合せください。
【対象バージョン】
OrangeProMuzuAPI:v1.000
Microsoft Visual Basic.NET:2008以降推奨(Express Editionでも可)
※Windows x64(64ビット)では32ビットアプリケーションとして動作します。
【手順】
1. プロジェクトを新規作成する
[ファイル]→[新規作成]→[プロジェクト]の[Visual C++]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する
2. ファイルを配置する
以下のファイルをプロジェクトのフォルダにコピーする
OrangeProAPI.h
OrangeProAPI.lib
以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(debugフォルダとreleaseフォルダ)
OrangeProAPI.dll
3. DLLをリンクする
[プロジェクト]→[プロパティ]→[リンカ]→[入力]にOrangeProAPI.libを追加する
4. hファイルをプロジェクトに追加する
[プロジェクト]→[既存項目の追加]からOrangeProAPI.hをプロジェクトに追加する
stdafx.hの以下の場所にincludeを追加する。
// TODO: プログラムに必要な追加ヘッダーをここで参照してください。
#include "OrangeProAPI.h"
5. 関数を呼び出す
OrangeProAPI.hに定義されている関数を呼び出す
【サンプルコード】
2.VBでの開発例を参考にしてください。
※製品にサンプルコードは付属しています。
2. VBでの開発例
※VBA開発時の注意事項
Integer型をLong型にしてお使いください。予期せぬ動作をする場合があります。(VBAではInteger型が2バイトのため、Long型の4バイトをお使いください。)
【対象バージョン】
OrangeProMuzuAPI:v1.000
Microsoft Visual Basic.NET:2008以降推奨(Express Editionでも可)
※Windows x64(64ビット)では32ビットアプリケーションとして動作します。
【手順】
1. プロジェクトを新規作成する
[ファイル]→[新規作成]→[プロジェクト]の[Visual Basic]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する
2. ファイルを配置する
以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(デフォルトではbin\Releaseとbint\Debug)
OrangeProAPI.dll
3. DLLをリンクする
呼び出すクラス内で以下の宣言を記述する
例.
Declare Function OTReadBlockIndex Lib "OrangeProAPI.dll" (ByRef data As Byte, ByRef dataLength As Integer, ByRef id As Byte, ByRef idLength As Integer, ByRef cardType As Integer, ByVal index As Integer, ByVal block As Integer, ByRef key As Byte, ByVal keyType As Integer) As Integer
Declare Function OTWriteBlockIndex Lib "OrangeProAPI.dll" (ByRef data As Byte, ByVal dataLength As Integer, ByRef id As Byte, ByRef idLength As Integer, ByRef cardType As Integer, ByVal index As Integer, ByVal block As Integer, ByRef key As Byte, ByVal keyType As Integer) As Integer
※ほかにも呼び出し方法はあります
4. 関数を呼び出す
定義されている関数を呼び出す
【サンプルコード】
・VB.NETの場合(読取り)
ボタンをクリックした時にICのブロック0番目の読取り結果をラベルに表示するサンプルコードです。
フォームにツールボックスからTextBoxを2つ貼り付けてください。
※製品にサンプルコードは付属しています。
※VB6.0以前のバージョンの場合はの場合はサンプルコード内の
result += id(i).ToString("X2") を
result = result & Right("00" & Hex(id(i)), 2) に変更して下さい。
Public Class Form1
Declare Function OTReadBlockIndex Lib "OrangeProAPI.dll" (ByRef data As Byte, ByRef dataLength As Integer, ByRef id As Byte, ByRef idLength As Integer, ByRef cardType As Integer, ByVal index As Integer, ByVal block As Byte, ByRef key As Byte, ByVal keyType As Integer) As Integer
' 読取結果
Private Const OT_SUCCESS As Integer = 0 ' 処理成功
Private Const OT_FAILURE As Integer = 1 ' 処理失敗
Private Const OT_NO_SERVICE As Integer = 2 ' カードサービスエラー
Private Const OT_NO_READERS As Integer = 3 ' リーダー未接続
Private Const OT_NO_CARD As Integer = 4 ' カード未接続
Private Const OT_REMOVE_TIMEOUT As Integer = 5 ' カード除去待ちタイムアウト
Private Const OT_REMOVE_READERS As Integer = 6 ' リーダー切断エラー
Private Const OT_REMOVE_CARD As Integer = 7 ' カード切断エラー
Private Const OT_CARD_TIMEOUT As Integer = 8 ' カード待ちタイムアウト
Private Const OT_COMMAND_ERROR As Integer = 9 ' カードID取得コマンドエラー
Private Const OT_RELEASE_ERROR As Integer = 10 ' カードサービス解放エラー
Private Const OT_UNKNOWN_CARD As Integer = 11 ' 不明なカード種別
Private Const OT_AUTHENTICATE_ERROR As Integer = 12 ' キー認証エラー(Mifare)
Private Const OT_DATA_READ_ERROR As Integer = 13 ' データ読取エラー
Private Const OT_DATA_WRITE_ERROR As Integer = 14 ' データ書込エラー
Private Const OT_DATA_ACCESS_ERROR As Integer = 15 ' データアクセスエラー
Private Sub button1_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
' ブロックデータ
Dim data As [Byte]() = New [Byte](15) {}
' ブロックデータ長
Dim dataLength As New IntPtr()
' カードIDデータ
Dim id As [Byte]() = New [Byte](9) {}
' カードIDデータ長
Dim idLength As New IntPtr()
' カードタイプ
Dim cardType As New IntPtr()
Dim idString As [String] = ""
Dim dataString As [String] = ""
' リーダー0番目指定
Dim index As Integer = 0
' ブロック0番目指定
Dim block As Byte = &H0
' 工場出荷時キー指定
Dim key As [Byte]() = {&Hff, &Hff, &Hff, &Hff, &Hff, &Hff}
' キーA指定(0:キーA/1:キーB)
Dim keyType As Integer = 0
Dim result As Long = 0
' データ読込み
result = OTReadBlockIndex(data(0), dataLength, id(0), idLength, cardType, index, block, key(0), keyType)
If result = OT_SUCCESS OrElse result = OT_REMOVE_TIMEOUT Then
' カードID文字列作成
For i As Integer = 0 To idLength.ToInt32() - 1
idString += id(i).ToString("X2")
Next
' ブロックデータ文字列作成
For i As Integer = 0 To dataLength.ToInt32() - 1
dataString += data(i).ToString("X2")
Next
Else
idString = "読取りに失敗しました。:"
idString += result.ToString()
End If
textBox1.Text = idString
textBox2.Text = dataString
End Sub
End Class
・VB.NETの場合(書込み)
ボタンをクリックした時にICのブロック0番目に書き込むサンプルコードです。
フォームにツールボックスからTextBoxを2つ(txtWriteData、txtResultData)貼り付けてください。
※VB6.0以前のバージョンの場合はの場合はサンプルコード内の
result += id(i).ToString("X2") を
result = result & Right("00" & Hex(id(i)), 2) に変更して下さい。
Public Class Form1
Declare Function OTWriteBlockIndex Lib "OrangeProAPI.dll" (ByRef data As Byte, ByVal dataLength As Integer, ByRef id As Byte, ByRef idLength As Integer, ByRef cardType As Integer, ByVal index As Integer, ByVal block As Byte, ByRef key As Byte, ByVal keyType As Integer) As Integer
Private Sub button2_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
Dim data(15) As Byte '書込データバッファ
Dim dataLength As Integer '書込データサイズ
Dim id(10) As Byte 'カードID
Dim idLength As Integer 'カードIDサイズ
Dim cardType As Integer 'カードタイプ
Dim idString As String = "" 'カードID文字列
Dim dataString As String = "" '結果文字列
Dim index As Integer = 0 'リーダーインデックス
Dim block As Byte = 1 '書込みブロック
Dim result As Integer '処理結果
Dim writeString As String = txtWriteData.Text '書込文字列
'空白を削除する
writeString = writeString.Replace(" ", "")
txtWriteData.Text = writeString
' キー情報生成
Dim key As Byte() = {&HFF, &HFF, &HFF, &HFF, &HFF, &HFF}
Dim keyType As Integer = 0
'書込み文字列が入力されている場合
If writeString.Length > 0 Then
dataLength = StrToByteHex(writeString, data)
If dataLength <= 0 Then
MessageBox.Show("書込みデータが指定されていません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
Return
End If
'データ書込します
result = OTWriteBlockIndex(data(0), dataLength, id(0), idLength, cardType, index, block, key(0), keyType)
'IDが取得できていれば表示します
If idLength > 0 Then
'ICのIDを表示
Dim i As Integer
For i = 0 To (idLength - 1)
idString += id(i).ToString("X2")
Next
End If
'書込み結果を表示
If 0 = result Then
dataString = "書込完了しました"
Else
dataString = "書込失敗しました" + result.ToString()
End If
Else
dataString = "16byte分の数値がありません"
End If
'結果表示
txtResultData.Text = dataString
End Sub
End Class
・VB.NETの場合(FeliCaStandard読込み)
ボタンをクリックした時にFeliCa Standardのサービスコード(0x12AB)、ブロック番号0を読み出すサンプルコードです。
フォームにツールボックスからTextBoxを2つ(textBox1、textBox2)を貼り付けてください。
※詳しくはFeliCa仕様書を参照ください)
※製品付属の確認アプリ(Orange Command App)にてサービスコード、ブロック番号を入力して動作確認を行うことができます。
Public Class Form1
Declare Function OTFeliCaReadBlockIndex Lib "OrangeProAPI.dll" (ByRef data As Byte, ByRef dataLength As Integer, ByRef id As Byte, ByRef idLength As Integer, ByRef cardType As Integer, ByVal index As Integer, ByRef serviceCode As Byte, ByRef block As Byte) As Integer
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click
Dim data As [Byte]() = New [Byte](15) {} ' ブロックデータ長
Dim dataLength As New IntPtr()
' カードIDデータ
Dim id As [Byte]() = New [Byte](9) {}
' カードIDデータ長
Dim idLength As New IntPtr()
' カードタイプ
Dim cardType As New IntPtr()
Dim idString As [String] = ""
Dim dataString As [String] = ""
' リーダー0番目指定
Dim index As Integer = 0
'サービスコード &H12AB
Dim ServiceCode As Byte() = {&H12, &HAB}
' ブロック0番目指定
Dim block As Byte() = {&H80, &H0}
Dim result As Long = 0
' データ読込み
result = OTFeliCaReadBlockIndex(data(0), dataLength, id(0), idLength, cardType, index, ServiceCode(0), block(0))
If result = 0 OrElse result = 5 Then
' カード ID文字列作成()
For i As Integer = 0 To idLength.ToInt32() - 1
idString += id(i).ToString("X2")
Next
' ブロックデータ文字列作成
For i As Integer = 0 To dataLength.ToInt32() - 1
dataString += data(i).ToString("X2")
Next
Else : idString = "読取りに失敗しました。:"
idString += result.ToString()
End If
textBox1.Text = idString
textBox2.Text = dataString
End Sub
End Class
3. C#での開発例
【対象バージョン】
OrangeProMuzuAPI:v1.000
Microsoft Visual Basic.NET:2008以降推奨(Express Editionでも可)
※Windows x64(64ビット)では32ビットアプリケーションとして動作します。
【手順】
1. プロジェクトを新規作成する
[ファイル]→[新規作成]→[プロジェクト]の[Visual C#]→[Windowsフォームアプリケーション]でプロジェクト名(任意)を入力する
2. ファイルを配置する
以下のファイルをプロジェクトの実行ファイル出力フォルダにコピーする(デフォルトでは bin\Releaseとbint\Debug)
OrangeProAPI.dll
3. DLLをリンクする
呼び出すクラス内で以下の宣言を記述する
例.
[DllImport("OrangeProAPI.dll", EntryPoint = "OTReadBlockIndex", CharSet = CharSet.Ansi)]
private extern static int OTReadBlockIndex(ref Byte data, ref IntPtr dataLength, ref Byte id, ref IntPtr idLength, ref IntPtr cardType, int index, int block, ref Byte key, int keyType);
※ほかにも呼び出し方法はあります
4. 関数を呼び出す
定義されている関数を呼び出す
【サンプルコード】
2.VBでの開発例を参考にしてください。
※製品にサンプルコードは付属しています。
4. 関数リファレンス
【対象バージョン】OrangeProMuzuAPI:v2.000
【関数一覧】
GetReadersList ・・・接続されているICカードリーダーの名称一覧と数量を取得する
OTReadBlockIndex ・・・ICカードのデータをブロック指定して読み出す(ICカードリーダー選択あり)
OTWriteBlockIndex ・・・ICカードのデータをブロック指定して書き込む(ICカードリーダー選択あり)
OTGetCardInfoIndex ・・・ICカードのIDと種別を取得する(ICカードリーダー選択あり)
OTGetReaderInfoIndex ・・・リーダライタのシリアル番号を取得する(ICカードリーダー選択あり)
OTReadRangeIndex ・・・ICカードのデータをブロック範囲を指定して読み込む(ICカードリーダー選択あり)
OTWriteRangeIndex ・・・ICカードのデータをブロック範囲を指定して書き込む(ICカードリーダー選択あり)
OTFeliCaReadBlockIndex・・・FeliCa Standardカードの鍵なしエリアのデータをサービスコード、ブロック番号を指定して読み込む(ICカードリーダー選択あり) ※製品付属の確認アプリ(Orange Command App)にてサービスコード、ブロック番号を入力して動作確認を行うことができます。
OTFeliCaThroughIndex・・・FeliCaカードへそのままスルーでコマンドを送信するだけとなりますので(ICカードリーダー選択あり) 、詳細なFeliCaコマンド仕様をお客様がご存じという事が前提となります。FeliCaコマンド仕様はソニー社の著作物でサポートできません。
カード種別
0: 不明なカード
1: Mifare Classic 1K
2: Mifare Classic 4K
3: Mifare Ultralight
5: FeliCa Standard / FeliCa Lite / FeliCa Lite-S
指定可能ブロック番号範囲
※指定時には10進数、16進数どちらで指定しているかご注意ください
(※1)
MIFARE Classic(EV1) 1K [スタンダード]のICチップ仕様はこちらをご覧ください→ https://www.orangetags.co.jp/datasheet/Mifare_Classic_EV1_1K_MF1S50.pdf なお、OTReadBlockIndexを使ってkeyの入っているブロック(API#block3,7,11・・等)を読込みするとKeyAが「FFFFFFFFFFFF」の場合、「000000000000」に表示されます。これはMIFARE Classic(EV1) 1K [スタンダード]のICチップ仕様です。KeyAは常にRead不可(Writeは可能)となります。KeyA、Access bits、KeyBと入っていますが、Access bitsによって読み書きが制限されます。詳細については上述のICチップ仕様をご確認ください。
カード種別に関する注意事項
※カード種別をみたい場合は、カードに接続した初回の時に種別を取得して下さい。カードが置かれたままの状態OT_REMOVE_TIMEOUTの場合は(カードIDは取得できますが)カード種別は取得できません。(Ver.3.0.1.0以降)
GetReadersList
・関数宣言
LRESULT APIENTRY GetReadersList(BYTE* list, int* number);
・引数
list: ICカードリーダー 名称文字列(2048バイト固定) ※\0区切りで連続しています
number: 接続済みICカードリーダー数
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
※OT_FAILUREは定義以外のエラー発生時に返されます。
※OT_REMOVE_TIMEOUTは100ms以上カードが置かれたままの場合に返されます。
OTReadBlockIndex
・関数宣言
LRESULT APIENTRY OTReadBlockIndex(BYTE* data, int* dataLength, BYTE* id, int* idLength, int* cardType, int index, BYTE block, BYTE* key, int keyType);
・引数
data: 読込みデータ
dataLength: 読込まれたデータサイズ(ICカードにより可変)
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
block: ブロック番号を指定します(0~カード規定ブロックまで)
key: キー情報を指定します(6byte)
keyType: キーを指定します(0:キーA/1:キーB)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
※OT_FAILUREは定義以外のエラー発生時に返されます。
OTWriteBlockIndex
・関数宣言
LRESULT APIENTRY OTWriteBlockIndex(BYTE* data, int dataLength, BYTE* id, int* idLength, int* cardType, int index, BYTE block, BYTE* key, int keyType);
・引数
data: 書込みデータ
dataLength: 書込みデータサイズ(ICカードにより可変)
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
block: ブロック番号を指定します(0~カード規定ブロックまで)
key: キー情報を指定します(6byte)
keyType: キーを指定します(0:キーA/1:キーB)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
※OT_FAILUREは定義以外のエラー発生時に返されます。
OTGetCardInfoIndex
・関数宣言
LRESULT APIENTRY OTGetCardInfoIndex(BYTE* id, int* length, int* cardType, int index);
・引数
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_TIMEOUT = 5; // カード除去待ちタイムアウト 同じカードが100ms以上かざされたままになっています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
※OT_FAILUREは定義以外のエラー発生時に返されます。
※OT_REMOVE_TIMEOUTは100ms以上カードが置かれたままの場合に返されます。
OTGetReaderInfoIndex
・関数宣言
LRESULT APIENTRY OTGetReaderInfoIndex(BYTE* readerId, int* readerIdLength, int index);
・引数
readerId: リーダーシリアルID
readerIdLength: リーダーシリアルIDの長さ(14byte固定で返ります)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
※OT_FAILUREは定義以外のエラー発生時に返されます。
OTReadRangeIndex
・関数宣言
LRESULT APIENTRY OTReadRangeIndex(BYTE* data, int* dataLength, BYTE* id, int* idLength, int* cardType, int index, BYTE startBlock, BYTE endBlock, BYTE* key, int keyType);
・引数
data: 読込みデータ
dataLength: 読込まれたデータサイズ(ICカードにより可変)
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
startBlock: 開始ブロック番号を指定します(0~カード規定ブロックまで)
endBlock: 終了ブロック番号を指定します(0~カード規定ブロックまで)
key: キー情報を指定します(6byte)
keyType: キーを指定します(0:キーA/1:キーB)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
OT_RANGE_ERROR = 50; // ブロック範囲エラー 開始ブロックに終了ブロックより大きい値が指定されています。
※OT_FAILUREは定義以外のエラー発生時に返されます。
OTWriteRangeIndex
・関数宣言
LRESULT APIENTRY OTWriteRangeIndex(BYTE* data, int dataLength, BYTE* id, int* idLength, int* cardType, int index, BYTE startBlock, BYTE endBlock, BYTE* key, int keyType);
・引数
data: 読込みデータ
dataLength: 読込まれたデータサイズ(ICカードにより可変)
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
block: ブロック番号を指定します(0~カード規定ブロックまで)
key: キー情報を指定します(6byte)
keyType: キーを指定します(0:キーA/1:キーB)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
OT_RANGE_ERROR = 50; // ブロック範囲エラー 開始ブロックに終了ブロックより大きい値が指定されています。
※OT_FAILUREは定義以外のエラー発生時に返されます。
OTFeliCaReadBlockIndex
・関数宣言
LRESULT APIENTRY OTFeliCaReadBlockIndex(BYTE* data, int* dataLength, BYTE* id, int* idLength, int* cardType, int index, BYTE* serviceCode, BYTE* block);
・引数
data: 読込みデータ
dataLength: 読込まれたデータサイズ(ICカードにより可変)
id: ID ※API側からICの固有IDが返ります
idLength: ID長さ ※API側からICの固有IDの長さが返ります
cardType: カード種別(※カード種別参照)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
serviceCode: FeliCaサービスコード(2バイト) ※ビッグエンディアン(詳しくはFeliCa仕様書を参照ください)
block: FeliCaブロック番号(2バイト) ※ビッグエンディアン(詳しくはFeliCa仕様書を参照ください)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_AUTHENTICATE_ERROR = 12; // キー認証エラー(Mifare) MifareStandardでキー認証に失敗しました。
OT_DATA_READ_ERROR = 13; // データ読取エラー データ読込みに失敗しました。
OT_DATA_WRITE_ERROR = 14; // データ書込エラー データ書込みに失敗しました。
OT_DATA_ACCESS_ERROR = 15; // データアクセスエラー FeliCaカードのデータアクセスに失敗しました。(FeliCa Liteのみ対応)
OT_RANGE_ERROR = 50; // ブロック範囲エラー 開始ブロックに終了ブロックより大きい値が指定されています。
※OT_FAILUREは定義以外のエラー発生時に返されます。
※Felica Standard内部へのアクセスは鍵なしエリアにおいて当該サービスコード情報やブロック情報をお持ちの場合に限ります。なおICカード発行者などに確認しても当該情報が不明の場合はアクセスできない場合があります。(詳細については発行元企業、ソニーまたはFeliCa仕様書を参照ください)
OTFeliCaThroughIndex
FeliCaコマンド仕様をお客様がご存じという事が前提となります。FeliCaコマンド仕様はソニー社の著作物のためのサポートできません。
・関数宣言
LRESULT APIENTRY OTFeliCaThroughIndex(const BYTE* command, int commandLength, BYTE* res, int* resLength, int index);
・引数
command: FeliCaコマンド
commandLength: FeliCaコマンドサイズ
res: FeliCaレスポンス(コマンドによって可変)
resLength: FeliCaレスポンスサイズ(コマンドによって可変)
index: リーダーのインデックスを指定します(0~9まで最大10台まで)
・返り値
OT_SUCCESS = 0; // 処理成功
OT_FAILURE = 1; // 処理失敗
OT_NO_SERVICE = 2; // カードサービスエラー スマートカードサービスが起動していません。
OT_NO_READERS = 3; // リーダー未接続 リーダーが接続されていません。接続してご利用ください。
OT_NO_CARD = 4; // カード未接続 ICカードが接続されていません。または利用できないカードをかざしています。
OT_REMOVE_READERS = 6; // リーダー切断 リーダーがはずされました。
OT_REMOVE_CARD = 7; // カード切断 カードがはずされました。
OT_CARD_TIMEOUT = 8; // カード待ちタイムアウト カード接続待機時間1msを超えました。
OT_COMMAND_ERROR = 9; // カードID取得コマンドエラー ICカードへのコマンドでエラーが発生しました。
OT_RELEASE_ERROR = 10; // カードサービス解放エラー スマートカードサービスの開放に失敗しました。
OT_UNKNOWN_CARD = 11; // 不明なカード種別 対象外のカードを検出しました。
OT_FELICA_COMMAND_LENGTH_ERROR = 60 // FeliCaスルーコマンド長エラー FeliCaコマンドが255バイトを超えています。
OT_FELICA_COMMAND_ERROR = 61 // FeliCaスルーコマンドエラー FeliCaコマンドでエラーが発生しました。
※OT_FAILUREは定義以外のエラー発生時に返されます。
※「成功」以外が返される場合は、リーダー、カード状態等をご確認ください。それでも解決しない場合はFAQ for ソフトウェア開発をご確認ください。
5. 利用フローチャート
OrangeProMuzuAPIの関数のステータスコード(返り値)に応じて処理を行ってください。
ステータスコードの内容は4.関数リファレンスに記載されています。
お問い合わせ
APIを利用したい方、APIの機能追加やカスタム開発・ソースコード提供、システムの受託開発などをご希望の方は、株式会社オレンジタグスまでお問い合わせ下さい。
※本サイト記載の社名・製品名・ロゴは各社の商標または登録商標です。
※本サイト記載の文書またはデータ等を無断で複写、複製、転記、転載、ノウハウの使用等を行うことは禁じられております。
Copyright © 2009-2013 Orangetags Inc. All Rights Reserved.