Je suis en train d'écrire des données à une étiquette ICODE NXP SLIX SL2S2002 (ISO 15693) en utilisant la commande BLOCS MULTIPLES WRITE à travers l'objet NfcV
:Ecriture de plusieurs blocs de commande basculées NfcV
private void writeTagData(Tag tag) throws Exception {
int offset = 0;
int blocks = 19;
String _writedata = "1hello34567850000071234561815064150220161603201016022018112233445552031033";
byte[] data = _writedata.getBytes(StandardCharsets.UTF_8);
data = Arrays.copyOfRange(data, 0, 4 * blocks);
byte[] id = tag.getId();
boolean techFound = false;
for (String tech : tag.getTechList()) {
if (tech.equals(NfcV.class.getName())) {
techFound = true;
NfcV nfcvTag = NfcV.get(tag);
try {
nfcvTag.connect();
} catch (IOException e) {
Toast.makeText(this, "IO Exception", Toast.LENGTH_LONG).show();
return;
}
try {
byte[] cmd = new byte[] {
(byte)0x20,
(byte)0x24,
(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00,
(byte)(offset & 0x0ff),
(byte)((blocks - 1) & 0x0ff)
};
System.arraycopy(id, 0, cmd, 2, 8);
byte[] cmd_plus_data = new byte[88];
System.arraycopy(cmd, 0, cmd_plus_data, 0, cmd.length);
System.arraycopy(data, 0, cmd_plus_data, 12, data.length);
byte[] response = nfcvTag.transceive(cmd_plus_data);
String strResponse = Common.toHexString(response);
} catch (IOException e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
try {
nfcvTag.close();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
return;
}
}
}
}
La réponse de la La méthode transceive(...)
est 010f
(indiquant "Erreur inconnue"). Auparavant, j'étais capable de lire des données en utilisant la commande READ MULTIPLE BLOCKS de la même balise avec succès.
I a essayé de faire appel getMaxTransceiveLength()
sur l'objet NfcV
et la valeur est 253.
À quel produit d'étiquette spécifique voulez-vous écrire? Étant donné que vous avez indiqué une valeur d'étiquette UID de 'e004015057da807b' dans un post précédent, je suppose que c'est un NXP ICODE SLIX SL2S2xx2, non? –
NXP ICODE SLIX SL2S2002 – ibrahim