私は個人的なプロジェクトに「Motorola EMDK for .NET」を使用していますが、(が選択されている場合)TagData.TagID
とTagData.MemoryBankData
異なります。MEMORY_BANK.TID
.NET のドキュメントは有益ではなく、単に次のように述べています。
TagData.TagID プロパティ
タグ ID を取得します
私は「Motorola EMDK for C」API を掘り下げました。これは、.NET SDK がラップする低レベルのインターフェイスであり、詳細が提供されました。
UNIT8* pTagID
タグ ID。C1G2 の場合、このフィールドは EPC データを参照します。
...これで問題は解決しましたが、 の値も一致MEMORY_BANK.EPC
しませんTagData.TagID
!
Class 1 Gen 2 仕様 ( http://www.gs1.org/sites/default/files/docs/uhfc1g2/uhfc1g2_2_0_0_standard_20131101.pdf ) を確認しましたが、タグのデータ構造に記述されているフィールドはどれもこれに対応していないようですTagID
財産。
各タグを一意に識別する手段として SDK によって生成される任意の不透明な値ではないかと思いTagData.TagID
ましたが、同じ値が異なるセッションで使用されていることに気付きました。これは間違いなく決定論的ですが、それはどういう意味ですか?
TagID
タグとプロパティのすべてのメモリ バンクをダンプするプログラムを作成しました。これが得られたものです。
TagData.TagID: "0000000000000000000C7D16" Bank: MEMORY_BANK_EPC , BankData: "743E30000000000000000000000C7D16"
TagData.TagID: "0000000000000000000C7D16" Bank: MEMORY_BANK_RESERVED, BankData: "0000000000000000"
TagData.TagID: "0000000000000000000C7D16" Bank: MEMORY_BANK_TID , BankData: "E20060031A8A034E"
TagData.TagID: "0000000000000000000C7D16" Bank: MEMORY_BANK_USER , BankData: "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
TagData.TagID: "3330323135385F303031" Bank: MEMORY_BANK_EPC , BankData: "EB1728003330323135385F303031"
TagData.TagID: "3330323135385F303031" Bank: MEMORY_BANK_RESERVED, BankData: "0000000000000000030004180CFA"
TagData.TagID: "3330323135385F303031" Bank: MEMORY_BANK_TID , BankData: "E2801130200029431C9701C2"
TagData.TagID: "3330323135385F303031" Bank: MEMORY_BANK_USER , BankData: "00000000"
TagData.TagID: "54573630354C5F303037" Bank: MEMORY_BANK_EPC , BankData: "B63E280054573630354C5F303037"
TagData.TagID: "54573630354C5F303037" Bank: MEMORY_BANK_RESERVED, BankData: "0000000000000000030004190CFA"
TagData.TagID: "54573630354C5F303037" Bank: MEMORY_BANK_TID , BankData: "E2801130200021A11D4501C2"
TagData.TagID: "54573630354C5F303037" Bank: MEMORY_BANK_USER , BankData: "00000000"
TagData.TagID: "54573630354C5F303132" Bank: MEMORY_BANK_EPC , BankData: "D5AA280054573630354C5F303132"
TagData.TagID: "54573630354C5F303132" Bank: MEMORY_BANK_RESERVED, BankData: "0000000000000000030004190CFA"
TagData.TagID: "54573630354C5F303132" Bank: MEMORY_BANK_TID , BankData: "E2801130200021F11D4501C2"
TagData.TagID: "54573630354C5F303132" Bank: MEMORY_BANK_USER , BankData: "00000000"
アップデート
よく見てなかったようです!
TagData.TagID
は に含まれています。次にEPC
例を示します。
TagData.TagID: "3330323135385F303031" Bank: MEMORY_BANK_EPC , BankData: "EB1728003330323135385F303031"
EPC: "EB1728003330323135385F303031"
TagID: "3330323135385F303031"
C1G2 仕様によると、EPC の先頭は次のように予約されています。
0x0000 to 0x000F - StoredCRC - 0xEB17
0x0010 to 0x001F - StoredPC - 0x2800
0x0020 to 0x020F - Actual EPC value - 0x3330323135385F303031
0x0210 to 0x021F - XPC_W1 (Optional) - null
0x0220 to 0x022F - XPC_W2 (Optional) - null
それはそれでそれをクリアします!
しかし、私の質問は次のとおりです。TagID
グローバルにユニークであると信頼できますTID
か? 私の理解ではEPC
、一意である必要はありません。これは単なる任意の文字列であり、シリアル番号ではありません。この場合、EPC 衝突の場合はどうなりますか?