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

S Swathi Shanmugasundaram 3 years 7 months ago
14 1 0

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.

Please Register or Login to post a reply

1 Replies

H Hien Alex

Hi mate,

I'm trying to locate multiple tag at the same time. Did you find anything ?

CONTACT
Can’t find what you’re looking for?