В чем разница между TagData.TagID и MEMORY_BANK.TID?

Я использую «Motorola EMDK для .NET» для личного проекта и вижу, что TagData.TagID и TagData.MemoryBankData различаются (когда выбран MEMORY_BANK.TID).

Документация .NET неинформативна, в ней просто указано:

Свойство TagData.TagID

Получает идентификатор тега

Я изучил API «Motorola EMDK for C», представляющий собой низкоуровневый интерфейс, который охватывает .NET SDK, и предоставил дополнительные сведения:

UNIT8* pTagID

Идентификатор тега, для C1G2 это поле относится к данным EPC.

...это проясняет ситуацию, за исключением того, что значение для MEMORY_BANK.EPC также не соответствует TagData.TagID!

Я просмотрел спецификацию Class 1 Gen 2 ( .gs1.org/sites/default/files/docs/uhfc1g2/uhfc1g2TagData.MemoryBankData0_0_standard_20131101.pdf ), и ни одно из полей, описанных в структурах данных тега, похоже, не соответствует этому TagID свойству.

Я действительно задавался вопросом, является ли TagData.TagID каким-то произвольным, непрозрачным значением, сгенерированным SDK как средством уникальной идентификации каждого тега, но я заметил, что одни и те же значения используются в разных сеансах, так что это определенно детерминировано, но что это значит ?

Я написал программу, которая выгружает все банки памяти тегов и свойства 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?


person Dai    schedule 19.04.2014    source источник


Ответы (1)


Невозможно гарантировать уникальность любого из этих полей. Все они могут быть обновлены принтером или считывателем. Поэтому вы должны доверять своему поставщику RFID-меток или печатать их самостоятельно. Коллизия EPC не проблема для читателя, только для вашего программного обеспечения.

person Artur Shamsutdinov    schedule 06.05.2014