0 Replies Latest reply on Jul 26, 2018 9:43 AM by Swathi Shanmugasundaram

    RFD 8500 performing asynchronous operations in order to tag locate based on product ID.

    Swathi Shanmugasundaram

      I am connecting to RFD 8500 device and its RFID Reader and reading the tag location from my android application. In order to read the tag location (using API3 library) I am defining a RFID Reader and invoking "tag locationing" -

       

                rfidReader.Actions.TagLocationing.Perform("30740322381297EBF5E22D2B", null, null);

       

      I would like to do the tag locationing for multiple tags, but at the same time on an asynchronous manner using a single RFD 8500 device. I don't find any ways to do this from the device's developer guide. Is there a way to achieve this?

      Alternatively, if i could do tag locationing based on a product ID on the tag and not the tag ID that will solve my problem too. But i do not sue product ID being read or used anywhere using the API3 library. Does the memory bank data of a tag contain product ID?

       

      Also, are there options to do multiple operations on the RFD 8500 at the same time at any use case at all? For example, I would like to asynchronously query for tags in the vicinity, filter them and trigger a tag locationing event for a tag satisfying certain criteria.

       

      Say, I would need to the following operations asynchronously at the same point of time with a single device,

       

           rfidReader.Actions.Inventory.perform();  -- asynchronous operation 1

           rfidReader.Actions.TagLocationing.Perform(tagId, null, null); -- asynchronous operation 2

         

       

         OR say,

       

          

               //Asynchronous operation 1

                ------------------------------------

                TagAccess tagAccess = new TagAccess();

                TagAccess.ReadAccessParams readAccessParams = tagAccess.new ReadAccessParams();

                readAccessParams.setAccessPassword(0);

                readAccessParams.setByteCount(8);

                readAccessParams.setMemoryBank(MEMORY_BANK.MEMORY_BANK_USER);

                readAccessParams.setByteOffset(0);

                AccessFilter accessFilter = new AccessFilter();

       

                byte[] tagMask = new byte[] { (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff, (byte)0xff,

             (byte)0xff, (byte)0xff, (byte)0xff };

                // Tag Pattern A
                accessFilter.TagPatternA.setMemoryBank(MEMORY_BANK.MEMORY_BANK_RESERVED);

                accessFilter.TagPatternA.setTagPattern(new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 });

                accessFilter.TagPatternA.setTagPatternBitCount(8 * 8);

                accessFilter.TagPatternA.setBitOffset(0);

                accessFilter.TagPatternA.setTagMask(tagMask);

                accessFilter.TagPatternA.setTagMaskBitCount(tagMask.length * 8);

                accessFilter.setAccessFilterMatchPattern(FILTER_MATCH_PATTERN.A);

       

                rfidReader.Actions.TagAccess.readEvent(readAccessParams, accessFilter, null);

       

               

                   

                //Asynchronous operation 2

                ------------------------------------

               

                rfidReader.Actions.TagLocationing.Perform(tagId, null, null);

       

          

      I am interested in doing these various asynchronous operations, so that I can find a tag for a product located in the closest proximity from the RFD 8500 device. So if there is a better solution to solve the use case I would be interested to learn. These are the various ad hoc operations I figured out from the developer guide of the device and put together to solve the problem of pulling out the closest tag for a product ID (UPC in this case).

       

      Thanks for reading.