2015-10-28 4 views
3

J'ai eu un problème avec la lecture de balise NFC-V. Le type de tag est Tag-it HF-I Plus (TMS37112). Voici le code que j'utilise pour lire les données:La balise de lecture Android NfcV toujours préfixer 0x00

private void GetTagInfo(Tag tag){ 
     String[] techList = tag.GetTechList(); 
     for (int i = 0; i < techList.Length; i++) { 
      if(techList[i].Contains("NfcV")){ 
       NfcV nfcv = NfcV.Get (tag); 
       nfcv.Connect(); 

       var response = nfcv.Transceive(new byte[] { 
        (byte)0x00, 
        (byte)0x23, 
        (byte)0x00, 
        (byte)0x01 }); 
      } 
     } 
    } 

écriture en C#, mais pas le but ici (travail sur Xamarin). Indépendamment de ce que j'utilise comme premier numéro de bloc, j'ai un 0x00 avant mes données. Est-ce normal?

+0

Après quelques recherches que je vois ici [ nfcapp] (https://code.google.com/p/nfcutils/source/browse/org/android/nfc/tech/ReadNfcV.java?r=71e8373bc57e64a1fc961b7990fe00fcf138ba8d) Sur la ligne 370 dans readSingleBlock et sur la ligne 395 dans readMultipleBlocks il évite de lire le premier octet. Est-ce normal? – Leze

Répondre

3

Ce que vous voyez est l'indicateur des octets. Cet octet fait partie de chaque trame de réponse NFC-V et fournit des informations sur l'état de la commande. Si cet octet est 0x00 (ou éventuellement 0x80), la commande a été exécutée avec succès et les octets restants contiennent les paramètres/données de réponse pour votre commande (dans votre cas un bloc commençant au bloc zéro demandé par la commande READ MULTIPLE BLOCKS).

Si le bit 0 de l'octet de drapeaux est défini, cela indique une erreur d'exécution, le deuxième octet codera les informations d'erreur comme définies dans la norme ISO/IEC 15693-3.

Ainsi un cadre typique d'une commande NFC-V (lors d'échanges en utilisant NfcV.transceive()) ressemble à ceci:

+-------+--------------+--------------------------------+-------------------------+ 
| FLAGS | COMMAND CODE | [ADDRESS, if Addressed_flag=1] | COMMAND PARAMETERS/DATA | 
+-------+--------------+--------------------------------+-------------------------+ 

et la trame de réponse ressemble à ceci:

+-------+--------------------------+ 
| FLAGS | RESPONSE PARAMETERS/DATA | 
+-------+--------------------------+ 
+0

Merci beaucoup pour votre réponse Michael. J'ai cherché pendant un moment à obtenir un Doc pour le protocole nfc-v pour vérifier si cet octet est normal, je ne l'ai toujours pas trouvé. Donc, vous répondez est plus qu'apprécié pour moi. Et votre illustration est plus qu'explicite. – Leze