2016-04-04 85 views
0

我目前正在嘗試向特定塊寫入幾個字節。我讀命令做工精細,我能夠用下面的代碼讀取我的標記的任何塊:Android - 寫入ISO15693標籤

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

當我嘗試用下面的代碼來寫,我的應用程序崩潰。

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

我在AsyncTask中做這件事,並得到java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()異常。

任何提示?該標籤是意法半導體公司的M24LR04E-R

回答

1

找出來了。我只寫了8位數據,而標籤每塊有32位。增加了3個0x00,寫入成功。

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