2016-04-04 2 views
0

J'essaye actuellement d'écrire un couple d'octets à un bloc spécifique. Mes commandes de lecture fonctionnent très bien et je suis capable de lire un bloc de mon étiquette en utilisant le code ci-dessous:Android - Ecrire à ISO15693 Tags

command = new byte[]{ 
      (byte) 0x02, // Flags 
      (byte) 0x23, // Command: Read multiple blocks 
      (byte) 0x09, // First block (offset) 
      (byte) 0x03 // Number of blocks // MAX READ SIZE: 32 blocks:1F 
    }; 
byte[] data = nfcvTag.transceive(command); 

Lorsque je tente d'écrire avec le code ci-dessous, mon application se bloque.

Write = new byte[]{ 
       (byte) 0x02, // Flags 
       (byte) 0x21, // Command: Write 1 blocks 
       (byte) 0x5A, // First block (offset) 
       (byte) 0x41 // Data 
     }; 
    nfcvTag.transceive(Write); 

Je fais cela dans un AsyncTask et obtenir l'exception java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare().

Des conseils? L'étiquette est un STMicroelectronics M24LR04E-R

Répondre

1

Compris. J'écrivais seulement 8 bits de données alors que le tag a 32 bits par bloc. Ajouté 3 0x00 et l'écriture a réussi.

Write = new byte[]{ 
      (byte) 0x02, // Flags 
      (byte) 0x21, // Command: Write 1 blocks 
      (byte) 0x5A, // First block (offset) 
      (byte) 0x41, 
      (byte) 0x00, 
      (byte) 0x00, 
      (byte) 0x00 
    }; 
nfcvTag.transceive(Write);