2016-04-04 11 views
0

Ich versuche gerade, ein paar Bytes in einen bestimmten Block zu schreiben. Meine Lesebefehle funktionieren, und ich bin der Lage, jeden Block von meinem Tag zu lesen unter dem Code:Android - Schreiben nach 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); 

Wenn ich versuche, unten mit dem Code zu schreiben, meine App stürzt ab.

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

Ich tue dies in einem AsyncTask und bekommen die java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() Ausnahme.

Irgendwelche Tipps? Das Etikett ist ein STMicroelectronics M24LR04E-R

Antwort

1

Es herausgefunden. Ich schrieb nur 8 Datenbits, während das Tag 32 Bits pro Block hatte. Hinzugefügt 3 0x00's und der Schreibvorgang war erfolgreich.

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);