J'ai écrit un enregistrement de texte NDEF - "caca" (juste pour tester) sur une balise NFC Forum de type 2, et j'ai besoin d'aide pour comprendre ce qui a été écrit exactement et dans quel format. La commande qui a été envoyée au tag contient quatre tableaux :

new Uint8Array([162, 4, 3, 10, 209, 1]).buffer                                                           
new Uint8Array([162, 5, 6, 84, 2, 101]).buffer                                                           
new Uint8Array([162, 6, 110, 112, 111, 111]).buffer  <-- 112, 111, 111 is ASCII for "poo"                                                 
new Uint8Array([162, 7, 254, 0, 0, 48]).buffer 

Je comprends que le premier octet de chaque tableau (162) est la commande "write". Le deuxième octet (4, 5, 6, 7) de chaque tableau est l'index dans l'ensemble des données de balise pour placer les octets qui suivent. Il commence à 4 car les 16 premiers octets ont déjà été écrits et contiennent des métadonnées sur la balise. Je comprends également que le 112, 111, 111 est le texte que j'ai stocké.

Alors ma question : à quoi servent les deux premiers et le dernier tableaux ?

Je ne peux pas comprendre quelles données ils contiennent. Voici le contenu final de mon tag NFC (j'ai tronqué tous les zéros de la fin)

new Uint8Array([95, 222, 208, 217, 54, 218, 237, 38, 39, 3, 0, 0, 225, 17, 96, 0, 3, 10, 209, 1, 6, 84, 2, 101, 110, 112, 111, 111, 254, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...])

Comme vous pouvez le voir, les 16 premiers octets ont été écrits lors de la création ; définir la balise. À la suite de cela sont les 4 tableaux d'en haut. Ma compréhension actuelle découle de ici, ce qui explique que la charge utile est fournie avec métadonnées pour expliquer de quel type de données, etc. il s'agit, mais il y a deux tableaux précédant la charge utile et un après, que je ne comprends pas.

1
sparkhead95 19 mars 2019 à 16:55

2 réponses

Meilleure réponse

Après m'être cogné la tête contre un mur pendant un moment, j'ai compris qu'il s'agissait de de métadonnées comme je le soupçonnais, mais c'était dans un ordre différent de ce qui est normalement documenté. Plus de détails sur ce qui suit peuvent être trouvés ici.

new Uint8Array([162, 4, 3, 10, 209, 1]).buffer
3: "Type length"
10: "Record length"
209: "NDEF record header"
1: "Type Name Field"

new Uint8Array([162, 5, 6, 84, 2, 101]).buffer   
6: "Payload Length"
84: "Well known record"
2: "Well known record type" (in this case - the encoding for this text (UTF))
101: "e"

new Uint8Array([162, 6, 110, 112, 111, 111]).buffer
110: "n" - ("en" is locale)
112: "p"
111: "o"
111: "o"

new Uint8Array([162, 7, 254, 0, 0, 48]).buffer 
254: Marks the end of the payload
0
sparkhead95 20 mars 2019 à 14:08

Il s'agit de métadonnées NDEF :

structure

Vous pouvez faire correspondre les données à chacun des champs ci-dessus.

2
henrycjc 20 mars 2019 à 08:04