UHF 帯 RFID リーダ・ライタ
RFID タグを取得する API 関数

2018 年 08 月 20 日

第 1.0.3 版

株式会社アートファイネックス

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

変更履歴
日付

版数

2018/05/14
2018/05/18
2018/08/01
2018/08/20

1.0.0
1.0.1
1.0.2
1.0.3

変更内容
初版発行
説明補足などカスタム事例の URL を修正
商品棚のカスタム事例 URL を追加

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

はじめに弊社 UHF 帯 RFID リーダ・ライタ(以下、リーダ・ライタとします)を Windows PC で制御するときは、アプリケーションソフトウェアの開発を容易にするために API 関数を用意しております。
RFID タグを取得する API 関数は用途別に数種類あります。
本書は、「RFID タグを取得する API 関数にはどういうものがあるのか？」、「どの API 関数を使えば良いのか？」を説明したものです。
システム検討前に一読くださいますようお願い致します。

無断転載を禁じます。
本書の内容は、断りなく変更することがあります。
※ Microsoft Windows は、米国 Microsoft Corp.の登録商標です。
※ YouTube は、米国 Google LLC の商標または登録商標です。
※ その他、商品名及び製品名などは一般に各社の商標または登録商標です。

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

目次
1.

2.

RFID タグを読む API 関数 .................................................................................................................. 1
1.1.

リーダ・ライタ別使用可能 API 関数 ............................................................................................ 1

1.2.

API 関数の概要 ........................................................................................................................ 2

API 関数の選択方法 ......................................................................................................................... 4
2.1.

2.1.1.

リーダ・ライタ別 .................................................................................................................. 4

2.1.2.

取得する RFID タグ数 ........................................................................................................ 4

2.1.3.

RSSI の取得 ....................................................................................................................... 4

2.1.4.

時間指定で取得 ................................................................................................................ 4

2.1.5.

RFID タグ情報の入手方法 ................................................................................................. 52.1.6.

Single と Multiple ............................................................................................................. 52.2.

3.

選択方法の概要........................................................................................................................ 4

用途別の具体例........................................................................................................................ 62.2.1.

静的・多数のタグ認識（イメージ：棚にある商品の在庫認識） ............................................... 6

2.2.2.

動的・少数のタグ認識(イメージ：ゲートを通過する人の認識）.............................................. 7

2.2.3.

動的・多数のタグ認識(イメージ：ゲートを通過する台車内の商品認識） ............................... 8

IC タグライタでの実験方法 .................................................................................................................. 93.1.

su_ReadTagID_Single .......................................................................................................... 113.2.

su_ReadTagID_Single_ForManyTag .................................................................................. 113.3.

su_ReadTagID_Multiple ...................................................................................................... 113.4.

su_ReadTagID_Multiple_ForManyTag ............................................................................... 12

3.5.

so_GetTagRssi ...................................................................................................................... 12

3.6.

so_GetTagRssi_ForManyTag ............................................................................................... 12

3.7.

so_ReadTagID_Multiple_Nomerge.................................................................................... 13

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

1. RFID タグを読む API 関数
この章では、「RFID タグを取得する API 関数にはどういうものがあるのか？」 を説明します。

1.1. リーダ・ライタ別使用可能 API 関数
RFID タグを取得する API 関数として以下の 9 種類がありますが、使用するリーダ・ライタにより、使用できるAPI 関数に制限があります。
表内の×は使用できないことを意味しています。
また、×以外は各 API 関数内で発行するリーダ・ライタプロトコルのコマンド番号です。
f ファミリCB ファミリCB ファミリ

SP モデルSP モデルSU モデル

su_ReadTagID_Single

0x22

20h（シングル）

20h（シングル）

su_ReadTagID_Single_ForManyTag×

2Dh（シングル）

2Dh（シングル）

su_ReadTagID_Multiple

0x27

20h（一括通知）

20h（一括通知）

su_ReadTagID_Multiple_ForManyTag×

2Dh（一括通知）

2Dh（一括通知）

so_GetTagRssi

0x6B

63h

63h

so_GetTagRssi_ForManyTag

×65h

65h

su_ReadTagID_Multiple_Stock×

20h（一括通知）

×

su_ReadTagID_Multiple_Stock_ForManyTag×

2Dh（一括通知）

×

so_ReadTagID_Multiple_Nomerge××2Eh

関数名1

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

1.2. API 関数の概要
以下に各 API 関数を解説します。
su_ReadTagID_Single
RFID タグのIDを一回取得し、取得したRFIDタグの情報をAPI関数の引数で返します。
（アンテナ付近に複数個のRFIDタグがあるときは複数個取得します。）
取得したRFIDタグはマージされていますので、全て異なるIDのRFIDタグです。
※CBファミリの場合、15個以上のRFIDタグを検知したときは、始めに検知した14個までしか通知されません。
15個以上のRFIDタグを取得したいときは、下の関数をお使いください。
su_ReadTagID_Single_ForManyTag上の関数と同じですが、15個以上のRFID タグを取得できるところが違います。
15個以上のRFID タグを取得したときは完全にマージされていませんので、必要であればアプリケーションソフトウェア側でマージしてください。
su_ReadTagID_Multiple
RFID タグのIDを指定回数分連続して取得し、取得したRFIDタグの情報を１つずつコールバック関数で返します。
取得したRFIDタグはマージされていますので、全て異なるIDのRFIDタグです。
※CBファミリの場合、15個以上のRFIDタグを検知したときは、始めに検知した14個までしか通知されません。
15個以上のRFIDタグを取得したいときは、下の関数をお使いください。
su_ReadTagID_Multiple_ForManyTag上の関数と同じですが、15個以上のRFID タグを取得できるところが違います。
15個以上のRFID タグを取得したときは完全にマージされていませんので、必要であればアプリケーションソフトウェア側でマージしてください。




2

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

so_GetTagRssi
RFID タグのIDと受信電波強度(RSSI)を一回取得し、取得したRFIDタグの情報をAPI関数の引数で返します。
（アンテナ付近に複数個のRFIDタグがあるときは複数個取得します。）
取得したRFIDタグはマージされていますので、全て異なるIDのRFIDタグです。
※CBファミリの場合、15個以上のRFIDタグを検知したときは、始めに検知した14個までしか通知されません。
15個以上のRFIDタグを取得したいときは、下の関数をお使いください。
so_GetTagRssi_ForManyTag上の関数と同じですが、15個以上のRFID タグを取得できるところが違います。
15個以上のRFID タグを取得したときは完全にマージされていませんので、必要であればアプリケーションソフトウェア側でマージしてください。
su_ReadTagID_Multiple_Stock
RFID タグのIDを指定回数分連続して、または指定時間分連続して取得し、取得したRFIDタグの情報をAPI関数の引数で返します。
指定回数で取得したRFIDタグはマージされていますので、全て異なるIDのRFIDタグです。
※15個以上のRFIDタグを検知したときは、始めに検知した14個までしか通知されません。
15個以上のRFIDタグを取得したいときは、下の関数をお使いください。
su_ReadTagID_Multiple_Stock_ForManyTag上の関数と同じですが、15個以上のRFID タグを取得できるところが違います。
15個以上のRFID タグを取得したときは完全にマージされていませんので、必要であればアプリケーションソフトウェア側でマージしてください。
so_ReadTagID_Multiple_Nomerge
RFID タグのIDを指定回数分連続して取得し、取得したRFIDタグの情報を１つずつコールバック関数で返します。
15個以上のRFIDタグでも取得できます。
検知したRFIDタグをマージしないで返しますので、同じIDのRFIDタグ情報が複数回返りますので必要であればアプリケーションソフトウェア側でマージしてください。

3

UHF 帯 RFID リーダ・ライタ タグを読む API 関数



2. API 関数の選択方法
この章では、「どういうときにどの API 関数を使えば良いのか？」 を説明します。

2.1. 選択方法の概要
2.1.1. リーダ・ライタ別
お使いになるリーダ・ライタにより、使用できる API 関数に制限があります。前ページの表をご覧ください。

2.1.2. 取得する RFID タグ数
CB ファミリの場合、取得したい RFID タグ数が 15 個以上のときは、*****_ForManyTagまたはso_ReadTagID_Multiple_Nomerge を使います。

2.1.3. RSSI の取得
RSSI を取得する必要があるときは so_GetTagRssi を使います。
CB ファミリの場合、取得したい RFID タグ数が 15 個以上のときは so_GetTagRssi_ForManyTag を使います。

2.1.4. 時間指定で取得
CB ファミリ SP モデルの場合、指定した時間の間取得を続けたいときは、su_ReadTagID_Multiple_Stock ま
たは su_ReadTagID_Multiple_Stock_ForManyTag を使います。

4

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

2.1.5. RFID タグ情報の入手方法取得した RFID タグ情報の入手方法は API 関数により異なり、下の 2 種類あります。
1. 取得した複数の RFID タグ情報をまとめて API 関数の引数で返す
2. 取得した RFID タグ情報を 1 つずつコールバック関数で返す
各 API 関数がどちらの方法かは下の表をご覧ください。
関数名

引数

su_ReadTagID_Single○

su_ReadTagID_Single_ForManyTag○

コールバック

su_ReadTagID_Multiple○

su_ReadTagID_Multiple_ForManyTag○

so_GetTagRssi○

so_GetTagRssi_ForManyTag○

su_ReadTagID_Multiple_Stock○su_ReadTagID_Multiple_Stock_ForManyTag○

so_ReadTagID_Multiple_Nomerge○

2.1.6. Single と Multiple
su_ReadTagID_Single と su_ReadTagID_Multiple の使い分けは次の通りです。
・Single は 1 回行い、Multiple は指定回数行います。
・Single で取得した RFID タグ ID は API 関数の引数に返り、Multiple ではコールバック関数で返ります。
通常は扱いが容易な Single をご検討ください。
もし、1 回の取得で全ての RFID タグを取得できないときは Single を複数回行うか Multiple をお試しください。
Single を複数回行うときは同じ RFID タグ ID を取得するので、場合によりマージが必要になります。
（*****_ForManyTag を使う場合もマージが必要になります。）

5

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

2.2. 用途別の具体例
いくつかの用途例を取り上げて、その場合の RFID タグの取得方法を示します。
アンテナを複数接続可能な CB ファミリの機器を使用した例となります。

2.2.1. 静的・多数のタグ認識（イメージ：棚にある商品の在庫認識）
各商品に RFID タグが貼り付けてあり、リーダ・ライタで在庫認識をする場合です。
各棚に面型のアンテナを配置し（下の図では棚が 4 台あるため 4 つのアンテナを使用）、アンテナを切替えながらRFID タグを取得します。
また、1 回で取得する RFID タグ数は 15 個以上となるため、*****_ForManyTag を使います。

API 関数呼出し手順は下の通りです。
1. so_SetAntennaSwitchNum・・・アンテナ１に切り替える
2. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
3. so_SetAntennaSwitchNum・・・アンテナ２に切り替える
4. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
5. so_SetAntennaSwitchNum・・・アンテナ３に切り替える
6. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
7. so_SetAntennaSwitchNum・・・アンテナ４に切り替える
8. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
一回で全ての RFID タグを読めないようでしたら、下のいずれかの対応をご検討ください。
・上の 1～8 を数回繰り返す
・2,4,6,8 での su_ReadTagID_Single_ForManyTag を数回ずつ行う
・2,4,6,8 を su_ReadTagID_Multiple_ForManyTag にする（指定回数を数回にする）
ある商品の RFID タグを複数のアンテナ（棚）で読んでしまい、その商品がどの棚にあるかが6

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

推定できないことがあります。
そのときは、RSSI のフィルタリング設定機能を使うことで、RSSI の小さい RFID タグを取得しないようにできます。
また、so_GetTagRssi_ManyTag を使うことで、RSSI 値を比較しどの棚にあるかを推定することもできます。
このカスタム事例を下の URL でご紹介しています。
https://artfinex.co.jp/case-custom/uhf_readtagid/2.2.2. 動的・少数のタグ認識(イメージ：ゲートを通過する人の認識）
通過する人に RFID タグを携帯してもらい、その人が下のようなゲートを通過したことを認識する場合です。
ゲートの各所にアンテナを配置し（左下の図では 3 つ使用）、アンテナを切替えながら RFID タグを取得します。
また、1 回で取得する RFID タグ数は 1 個か 2 個であるため、*****_ForManyTag は使いません。

API 関数呼出し手順は下の通りです。
1. so_SetAntennaSwitchNum・・・アンテナ１に切り替える
2. su_ReadTagID_Single・・・RFID タグの ID を一回取得する
3. so_SetAntennaSwitchNum・・・アンテナ２に切り替える
4. su_ReadTagID_Single・・・RFID タグの ID を一回取得する
5. so_SetAntennaSwitchNum・・・アンテナ３に切り替える
6. su_ReadTagID_Single・・・RFID タグの ID を一回取得する
上の 1～6 を繰り返します。
RFID タグが動きますので、各アンテナでの取得時間を短くするために一回取得にします。
このカスタム事例を下の URL でご紹介しています。
https://artfinex.co.jp/case-custom/pass/

7

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

2.2.3. 動的・多数のタグ認識(イメージ：ゲートを通過する台車内の商品認識）
箱の中に RFID タグが貼られた多数の商品が入っています。この箱を台車に載せてゲートを通過する場合です。
ゲートの左右にアンテナを配置し（2 つ使用）、アンテナを切替えながら RFID タグを取得します。
また、1 回で取得する RFID タグ数は 15 個以上となるため、*****_ForManyTag を使います。

API 関数呼出し手順は下の通りです。
1. so_SetAntennaSwitchNum・・・アンテナ１に切り替える
2. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
3. so_SetAntennaSwitchNum・・・アンテナ２に切り替える
4. su_ReadTagID_Single_ForManyTag・・・RFID タグの ID を一回取得する
上の 1～4 を繰り返します。
RFID タグが動きますので、各アンテナでの取得時間を短くするために一回取得にします。
このカスタム事例を下の URL でご紹介しています。
https://artfinex.co.jp/case-custom/gs1-128-encode/8

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

3. IC タグライタでの実験方法
弊社提供の Windows アプリケーション（IC タグライタ）を使うことで、RFID タグを取得する API 関数を試すことができます。
◆IC タグライタの入手方法
IC タグライタは弊社のホームページよりダウンロードできます。（https://artfinex.co.jp/uhf-info/）
このページの下方にある 「ソフトウェアのダウンロード」 にある「タグ登録/イベントファイル作成機能付 UHFRFID 評価用 WinAPL「IC タグライタ」(最新版)」
でインストーラを入手できます。
◆IC タグライタの実行方法
インストーラを実行すると、指定したフォルダに実行ファイルや取扱説明書が生成されます。
※ IC タグライタの詳細はこの取扱説明書をご覧ください。
ICTagWriter.exe をダブルクリックして起動すると下の画面が表示されます。

9

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

画面左上の File－Connect... で、リーダ・ライタとの接続設定をして接続します。
次に、画面上の Option－Get ID... をクリックすると下の画面が表示されます。

画面右側の Parameter 欄で各種設定をした後、右下の START ボタンをクリックすると RFID タグの取得を開始します。
以下に、各 API 関数を実行するときの設定方法を記します。

10

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

3.1. su_ReadTagID_Single
Single を選択する。
Read many Tag と Enable RSSI はチェックをしない。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)
実行間隔 (Interval)

3.2. su_ReadTagID_Single_ForManyTag
Single を選択する。
Read many Tag にチェックする。
Enable RSSI はチェックをしない。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)
実行間隔 (Interval)

3.3. su_ReadTagID_Multiple
Multiple を選択する。
Read many Tag はチェックしない。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)

11

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

3.4. su_ReadTagID_Multiple_ForManyTagMultiple を選択する。
Read many Tag にチェックする。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)

3.5. so_GetTagRssi
Single を選択する。
Read many Tag はチェックしない。
Enable RSSI にチェックする。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)
実行間隔 (Interval)

3.6. so_GetTagRssi_ForManyTag
Single を選択する。
Read many Tag と Enable RSSI にチェックする。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)
実行間隔 (Interval)

12

UHF 帯 RFID リーダ・ライタ タグを読む API 関数

3.7. so_ReadTagID_Multiple_Nomerge
MultipleNomerge を選択する。
必要に応じて以下を設定する。
使用するアンテナ (Antenna switch)
実行回数 (Number of times)

以上13