2016-04-04 10 views
0

В настоящее время я пытаюсь написать пару байтов для определенного блока. Мои команды чтения отлично работает, и я могу прочитать любой блок моего тега, используя код ниже:Android - Запись в 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); 

Когда я пытаюсь писать код ниже, мое приложение аварии.

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() исключения.

Любые советы? Тег представляет собой STMicroelectronics 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);