Блокировка пользовательской памяти RFID

Я работаю над метками RFID. Я использую считыватель Speedway Revolution (R-420) для считывания меток. http://www.impinj.com/Speedway_Revolution_UHF_RFID_Reader.aspx Я использую Confidex Steelware Micro ETSI Monza теги (номер продукта 3000127) http://www.confidex.com/products-and-services/compare-uhf-products/524-confidex-steelwave-micro. Я использую Octane SDK от Impinj. Я столкнулся с проблемой, когда я пытаюсь заблокировать память пользователя, я получаю сообщение об ошибке.

Это код, который я использую:

    static void Main(string[] args)
    {
        try
        {
            // Connect to the reader.
            // Change the ReaderHostname constant in SolutionConstants.cs 
            // to the IP address or hostname of your reader.
            reader.Connect(SolutionConstants.ReaderHostname);

            // Assign the TagOpComplete event handler.
            // This specifies which method to call
            // when tag operations are complete.
            reader.TagOpComplete += OnTagOpComplete;

            // Configure the reader with the default settings.
            reader.ApplyDefaultSettings();

            // Create a tag operation sequence.
            // You can add multiple read, write, lock, kill and QT
            // operations to this sequence.
            TagOpSequence seq = new TagOpSequence();


            // Define a tag write operation that sets the access password. 
            TagWriteOp writeOp = new TagWriteOp();
            // Assumes that current access password is not set
            // (zero is the default)
            writeOp.AccessPassword = null;
            // The access password is in the Reserved memory bank.
            writeOp.MemoryBank = MemoryBank.Reserved;
            // A pointer to the start of the access password.
            writeOp.WordPointer = WordPointers.AccessPassword;
            // The new access password to write.
            writeOp.Data = TagData.FromHexString("11112222");

            // Add this tag write op to the tag operation sequence.
            seq.Ops.Add(writeOp);

            // Create a tag lock operation to lock the 
            // access password and User memory.
            TagLockOp lockOp = new TagLockOp();
            lockOp.AccessPasswordLockType = TagLockState.Lock;
            lockOp.EpcLockType = TagLockState.Lock;


            // Add this tag lock op to the tag operation sequence.
            seq.Ops.Add(lockOp);

            // Add the tag operation sequence to the reader.
            // The reader supports multiple sequences.
            reader.AddOpSequence(seq);

            // Start the reader
            reader.Start();
        }
        catch (OctaneSdkException e)
        {
            // Handle Octane SDK errors.
            Console.WriteLine("Octane SDK exception: {0}", e.Message);
        }
        catch (Exception e)
        {
            // Handle other .NET errors.
            Console.WriteLine("Exception : {0}", e.Message);
        }

        // Wait for the user to press enter.
        Console.WriteLine("Press enter to exit.");
        Console.ReadLine();

        // Stop reading.
        reader.Stop();

        // Disconnect from the reader.
        reader.Disconnect();
    }

    // This event handler will be called when tag 
    // operations have been executed by the reader.
    static void OnTagOpComplete(ImpinjReader reader, TagOpReport report)
    {
        // Loop through all the completed tag operations
        foreach (TagOpResult result in report)
        {
            if (result is TagWriteOpResult)
            {
                // These are the results of settings the access password.
                // Cast it to the correct type.
                TagWriteOpResult writeResult = result as TagWriteOpResult;
                // Print out the results.
                Console.WriteLine("Set access password complete.");
                Console.WriteLine("EPC : {0}", writeResult.Tag.Epc);
                Console.WriteLine("Status : {0}", writeResult.Result);
                Console.WriteLine("Number of words written : {0}", writeResult.NumWordsWritten);
            }
            else if (result is TagLockOpResult)
            {
                // Cast it to the correct type.
                // These are the results of locking the access password or user memory.
                TagLockOpResult lockResult = result as TagLockOpResult;
                // Print out the results.
                Console.WriteLine("Lock operation complete.");
                Console.WriteLine("EPC : {0}", lockResult.Tag.Epc);
                Console.WriteLine("Status : {0}", lockResult.Result);
            }
        }
    }
}

}

Это ошибка, которую я получаю: «Нет ответа от тега»


person Kishore Kumar    schedule 18.07.2013    source источник
comment
Вы пытались общаться с RFID с помощью простых команд ASCII?   -  person Tigran    schedule 18.07.2013
comment
Нет, я не пробовал. Можете ли вы поделиться ссылкой на команды ASCII?   -  person Kishore Kumar    schedule 18.07.2013
comment
Не очень уверен, есть ли общий набор команд у разных производителей (просто не знаю). Вы должны иметь некоторую документацию, предоставленную самой меткой RFID. Несколько лет назад я сделал это (у меня была документация протокола связи, предоставленная самим производителем), но я не знаю, отличается ли он в вашем случае -   -  person Tigran    schedule 18.07.2013


Ответы (2)


Вы следовали этому руководству? http://learn.impinj.com/articles/en_US/RFID/Locking-Memory-on-EPC-RFID-Tags/

person jmcfarland    schedule 18.07.2013
comment
Да, я следую этому коду, даже если я получаю СТАТУС как нет ответа от тега - person Kishore Kumar; 19.07.2013

Если вы выполняете шаги, описанные в руководстве, упомянутом выше, нет никаких причин, по которым оно не должно работать, ЕСЛИ тег уже не заблокирован.

Поскольку заблокированный статус часто не может быть прочитан читателем, а только выведен, в этом случае может быть, что тег (или теги), который вы используете, по какой-то причине уже заблокирован. Я рекомендую попробовать несколько разных типов тегов (по возможности с разными ИС), чтобы увидеть, сохраняется ли ошибка по всем направлениям.

person Shain Armstrong    schedule 23.08.2013