Как получить доступ к банкам памяти EPC и USER в метке RFID (Motorola EMDK + .NET)

Мы разрабатываем индивидуальное решение для основных средств для клиента с использованием RFID-меток и портативного считывателя Motorola 919Z. До сих пор все шло хорошо, поскольку мы основывались на примерах Motorola для ее EMDK. Мы используем VB.NET.

Проблема в том, что у нас есть набор тегов Confidex Steelwave, которые нельзя пометить на принтере, поскольку они являются жесткими тегами, и поэтому они были помечены с помощью примера программного обеспечения, сохраняющего соответствующие данные в банке памяти ПОЛЬЗОВАТЕЛЯ, в то время как другой набор печатаемых Теги Confidex были помечены с помощью принтера Zebra RZ400, и соответствующие данные были записаны в поле идентификатора тега EPC.

Теперь нас просят прочитать оба поля (идентификатор тега EPC в одном случае, банк памяти USER в другом) одновременно. То есть, если соответствующие данные были помечены в банке памяти ПОЛЬЗОВАТЕЛЯ, идентификатор тега содержит нерелевантные шестнадцатеричные числа, а если использовался идентификатор тега EPC, банк памяти ПОЛЬЗОВАТЕЛЯ пуст или заполнен нулями.

Теперь мы не можем найти способ читать оба банка одновременно без того, чтобы пользователь останавливал чтение и переключал банки (в программном обеспечении), поэтому нам интересно, возможно ли это вообще.

Я не уверен, должен ли я публиковать код, так как он довольно длинный... может быть, важная часть такова:

Если мы используем Inventory.Perform ... он не читает банк памяти USER и, похоже, не использует фильтры доступа

Если мы используем OperationSequence.PerformSequence... это заставляет вас указать банк памяти.

Спасибо за ваше время.


person KalaNag    schedule 20.01.2014    source источник
comment
Вы когда-нибудь находили решение этой проблемы?   -  person Dai    schedule 19.04.2014
comment
Я нашел другой способ сделать это, мне пришлось прекратить использование триггера для автоматического запуска инвентаризации, а вместо этого пришлось ловить событие триггера, запускать таймер, запускать инвентаризацию в банке EPC, затем таймер останавливал инвентаризацию, переключал в банк USER, а затем перезапустите Inventory примерно каждые 0,3 мс и пока нажат триггер. Ужасный взлом, но он работает достаточно хорошо. Не горжусь этим, т.   -  person KalaNag    schedule 24.04.2014


Ответы (2)


У меня такая же проблема, и я нашел решение.

Используйте OperationSequence.PerformSequence, но хитрость заключается в том, чтобы сначала добавить несколько операций. Итак, добавьте операцию, считывающую банк USER, затем добавьте еще одну операцию, считывающую банк EPC, например:

RFIDReader reader = new RFIDReader();
reader.Connect();

MEMORY_BANK[] banks = new MEMORY_BANK[] {
    MEMORY_BANK.MEMORY_BANK_EPC, 
    MEMORY_BANK.MEMORY_BANK_USER, 
    MEMORY_BANK.MEMORY_BANK_RESERVED, 
    MEMORY_BANK.MEMORY_BANK_TID
};
foreach(MEMORY_BANK bank in banks) {
    TagAccess.Sequence.Operation op = new TagAccess.Sequence.Operation();
    op.AccessOperationCode = ACCESS_OPERATION_CODE.ACCESS_OPERATION_READ;
    op.ReadAccessParams.MemoryBank = bank;
    reader.Actions.TagAccess.OperationSequence.Add( op );
}

Затем просто вызовите reader.Actions.TagAccess.OperationSequence.PerformSequence, после чего вы получите Read событий для каждого банка, для каждой метки, пока метки находятся на расстоянии чтения сканером.

person Dai    schedule 19.04.2014
comment
Вы проверили это, и это сработало для вас? Поскольку я пробовал другую версию этого, когда у меня возникла эта проблема, вместо использования foreach я определил два объекта Operation, каждый со своим собственным MEMORY_BANK, а затем добавил их в последовательность, и это не сработало... - person KalaNag; 24.04.2014
comment
@KalaNag Да, я проверил это, и у меня это работает - я могу получить данные из всех банков в своих тегах. Что вы имеете в виду под не сработало? Вы указали параметры/конфигурацию Reader для возврата данных тегов в каждом событии Read? - person Dai; 04.05.2014

Вам необходимо выполнить последовательность операций перед инвентаризацией тегов, где вы должны установить банк памяти. После этого, когда бы вы ни начинали инвентаризацию, вы получите EPC в свойстве tagID и данные банка памяти в свойстве MemoryBankData.

person Maletha    schedule 02.08.2014