0 Replies Latest reply on Sep 7, 2015 10:50 PM by Mark Nongkhlaw

    Cannot read RFID tag id of ISO 15693 tag unless something is first written to it

    Mark Nongkhlaw

      Hi there,


      I'm banking on Zebra expertise for this :


      I am trying to develop an application with Rhodes for reading the tag ID of RFID ISO 15693 tag using an Android phone with NFC.

      The surprising thing is that my application does not read the tag ID of 16 characters hex until I write something to the tag first.

      I am attaching the screenshots taken by NFC TagInfo, an application I downloaded from Google Play.


      You can see from 1.png, I have written the string "Mark" to the tag. Only after I have written this text to the tag can my mobile phone display the tag ID of 16 characters hex. Other tags which have nothing written to them cannot be read by my application.


      Sample controller code (Adapted from rhodes-system-api-samples) :


        def nfc_tech_callback

          @msg = "Tech received! Reading tag..."


          # get_current_Tag:Returns the current NFCTag that the mobile device has just read, or returns nil if no tag has been discovered




          if tag != nil

            @msg = test_ndef_read(tag)


            @msg = "Tag is nil!"


          puts "msg at tech callback: #{@msg.inspect}"




        def test_ndef_read(tag)

          result = "No records..."

          # Find out what tech the tag uses with the method NFCTag.get_tech; the tag techs are listed in the NFCTagTechnology class. In this example, the tag is Ndef tech


          # string array containing the NFC tag


          # This method returns a byte array containing the NFC tag ID. This is what I need to display.



          puts "ndef at test_ndef_read tag: #{ndef.inspect}"

          if ndef != nil

            # Connect to the tag with the method NFCTagTechnology.connect



            type = ndef.get_type

            # In this example, it is an Ndef tag, so use the NTagTechnology_Ndef.read_NdefMessage method (subclass of NFCTechnology) to read the message.

            msg = ndef.read_NdefMessage


            puts "tag_tech_list at test_ndef_read tag: #{tag_tech_list.inspect}"

            puts "tag_ID at test_ndef_read tag: #{tag_ID.inspect}"

            puts "Tag name at test_ndef_read tag: #{tag_name.inspect}"

            puts "Tag type at test_ndef_read tag: #{type.inspect}"

            puts "msg at test_ndef_read tag: #{msg.inspect}"


            result="%02X%02X%02X%02X%02X%02X%02X%02X" % tag_ID.reverse








      In the above code,


      result = "No records..." is shown as the tag ID for an unwritten ("blank") tag, whereas the 16 character hex string (e.g., result = E00401004DEA2E9F) is correctly shown as the tag ID for a "written" tag.


      Can anyone tell me the reason for this behaviour?