SPI проблема хранения данных подскажите

SadiQ228
Offline
Зарегистрирован: 10.04.2017

Ну вообщем я принимаю ответ от смарт карты связкой ардуино+pn532.

Все работает, но как только ответ длинее  56 байт, то у меня получаются нули..... привожу пример:

я кое что отправил карте, получаю ответ:
responseLength: 51
6F 2F 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 1D BF 0C 1A 61 18 4F 07 A0 00 00 00 03 10 10 50 0A 56 69 73 61 20 44 65 62 69 74 87 01 01 90 00
это полный красивый ответ, он полностью декодится а так же имеет окончание в виде 90 00 эти два байта служат как бы сигналом о том, что все хорошо.
 
отправляю карте еще кое что, в ответ получаю в принципе то что нужно, но не до конца!
responseLength: 66
6F 3E 84 07 A0 00 00 00 03 10 10 A5 33 50 0A 56 69 73 61 20 44 65 62 69 74 87 01 01 9F 38 0C 9F 66 04 9F 02 06 9F 37 04 5F 2A 02 9F 12 0E 56 69 73 61 20 51 49 57 49 20 00 00 00 00 00 00 00 00 00 00
 
ну и чтобы точно убедится что я все делаю так и у меня что то именно с хранением, повторяю операцию:
responseLength: 75
77 47 82 02 00 00 57 13 46 93 95 75 50 85 44 47 D1 90 52 21 16 72 18 10 00 00 0F 5F 34 01 00 9F 10 07 06 01 11 03 A0 00 00 9F 26 08 2F 08 05 5E 9E AA 4D 3B 9F 27 01 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
отладки в ардуино нема, хочется спросить бывалых, может кто видит в этом ошибку реализации хранения данных или еще чего? ну прилогаю код конечно же:
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#define PN532_SCK  (13)
#define PN532_MOSI (11)
#define PN532_SS   (10)
#define PN532_MISO (12)
Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);
 void setup(void) {
  Serial.begin(230400);
  Serial.println("READY:)");
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1);
  }
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  nfc.SAMConfig();
  }

 void loop()
{
  bool success;
  // set shield to inListPassiveTarget
  success = nfc.inListPassiveTarget();
  if(success) {
        uint8_t selectApdu[] = {0x00, 0xA4, 0x04, 0x00, 0x0E, 0x32, 0x50, 0x41, 0x59, 0x2E, 0x53, 0x59, 0x53, 0x2E, 0x44, 0x44, 0x46, 0x30, 0x31, 0x00};
        uint8_t response[255];
        memset(response, 0, sizeof(response));
        uint8_t responseLength = sizeof(response);  
        success = nfc.inDataExchange(selectApdu, sizeof(selectApdu), response, &responseLength);
        if(success) {
              Serial.print("responseLength: "); Serial.println(responseLength);
              nfc.PrintHexChar(response, responseLength);
              uint8_t selectApdu[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x03, 0x10, 0x10, 0x00};
              memset(response, 0, sizeof(response));
              uint8_t responseLength = sizeof(response);
              success = nfc.inDataExchange(selectApdu, sizeof(selectApdu), response, &responseLength);
              if(success) {
                    Serial.print("responseLength: "); Serial.println(responseLength);
                    nfc.PrintHexChar(response, responseLength);
                    uint8_t selectApdu[] = {0x80, 0xA8, 0x00, 0x00, 0x12, 0x83, 0x10, 0x66, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x11, 0x22, 0x33, 0x44, 0x06, 0x43, 0x00};
                    memset(response, 0, sizeof(response));
                    uint8_t responseLength = sizeof(response);
                    success = nfc.inDataExchange(selectApdu, sizeof(selectApdu), response, &responseLength);
                    if(success) {
                          Serial.print("responseLength: "); Serial.println(responseLength);
                          nfc.PrintHexChar(response, responseLength);
                          
      }
      }
      }
      }
}

 

 

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015
#define PN532_PACKBUFFSIZ 64
byte pn532_packetbuffer[PN532_PACKBUFFSIZ];
...
 readdata(pn532_packetbuffer,sizeof(pn532_packetbuffer));
...

Это из Adafruit_PN532.cpp

Включите вывод отладочной информации PN532DEBUG там видно будет что к чему.

SadiQ228
Offline
Зарегистрирован: 10.04.2017

я включил там ничего не понятно

SadiQ228
Offline
Зарегистрирован: 10.04.2017
 0⸮READY:)

Sending:  0x0 0x0 0xFF 0x2 0xFFFFFFFE 0xD4 0x2 0xFFFFFF2A 0x0
Reading:  0x2 0x9F 0x12 0xE 0x56 0x69
No ACK frame received!

Sending:  0x0 0x0 0xFF 0x2 0xFFFFFFFE 0xD4 0x2 0xFFFFFF2A 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0xFF 0x6 0xFA 0xD5 0x3 0x32 0x1 0x6 0x7 0xE8 0x0
Found chip PN532

Sending:  0x0 0x0 0xFF 0x5 0xFFFFFFFB 0xD4 0x14 0x1 0x14 0x1 0xFFFFFF02 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0xFF 0x2 0xFE 0xD5 0x15 0x16 0x0
About to inList passive target
Sending:  0x0 0x0 0xFF 0x4 0xFFFFFFFC 0xD4 0x4A 0x1 0x0 0xFFFFFFE1 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x1F 0xE1 0xD5 0x4B 0x1 0x1 0x0 0x4 0x20 0x4 0x87 0xE4 0xF4 0xB6 0x13 0x78 0x80 0x72 0x2 0x80 0x31 0x80 0x66 0xB1 0x84 0xC 0x1 0x6E 0x1 0x83 0x0 0x90 0x0 0xC7 0x0 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA
Tag number: 1

Sending:  0x0 0x0 0xFF 0x17 0xFFFFFFE9 0xD4 0x40 0x1 0x0 0xA4 0x4 0x0 0xE 0x32 0x50 0x41 0x59 0x2E 0x53 0x59 0x53 0x2E 0x44 0x44 0x46 0x30 0x31 0x0 0xFFFFFF8F 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x36 0xCA 0xD5 0x41 0x0 0x6F 0x2F 0x84 0xE 0x32 0x50 0x41 0x59 0x2E 0x53 0x59 0x53 0x2E 0x44 0x44 0x46 0x30 0x31 0xA5 0x1D 0xBF 0xC 0x1A 0x61 0x18 0x4F 0x7 0xA0 0x0 0x0 0x0 0x3 0x10 0x10 0x50 0xA 0x56 0x69 0x73 0x61 0x20 0x44 0x65 0x62 0x69 0x74 0x87 0x1 0x1 0x90 0x0 0xCD 0x0 0xAA 0xAA 0xAA
responseLength: 51
6F 2F 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46 30 31 A5 1D BF 0C 1A 61 18 4F 07 A0 00 00 00 03 10 10 50 0A 56 69 73 61 20 44 65 62 69 74 87 01 01 90 00  o/⸮.2PAY.SYS.DDF01⸮.⸮..a.O.⸮......P.Visa Debit⸮..⸮.

Sending:  0x0 0x0 0xFF 0x10 0xFFFFFFF0 0xD4 0x40 0x1 0x0 0xA4 0x4 0x0 0x7 0xA0 0x0 0x0 0x0 0x3 0x10 0x10 0x0 0xFFFFFF79 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x45 0xBB 0xD5 0x41 0x0 0x6F 0x3E 0x84 0x7 0xA0 0x0 0x0 0x0 0x3 0x10 0x10 0xA5 0x33 0x50 0xA 0x56 0x69 0x73 0x61 0x20 0x44 0x65 0x62 0x69 0x74 0x87 0x1 0x1 0x9F 0x38 0xC 0x9F 0x66 0x4 0x9F 0x2 0x6 0x9F 0x37 0x4 0x5F 0x2A 0x2 0x9F 0x12 0xE 0x56 0x69 0x73 0x61 0x20 0x51 0x49 0x57 0x49 0x20
responseLength: 66
6F 3E 84 07 A0 00 00 00 03 10 10 A5 33 50 0A 56 69 73 61 20 44 65 62 69 74 87 01 01 9F 38 0C 9F 66 04 9F 02 06 9F 37 04 5F 2A 02 9F 12 0E 56 69 73 61 20 51 49 57 49 20 00 F7 BB FF D1 EB FF 51 B6 FB  o>⸮.⸮......⸮3P.Visa Debit⸮..⸮8.⸮f.⸮..⸮7._*.⸮..Visa QIWI .⸮⸮⸮⸮⸮⸮Q⸮⸮

Sending:  0x0 0x0 0xFF 0x1B 0xFFFFFFE5 0xD4 0x40 0x1 0x80 0xA8 0x0 0x0 0x12 0x83 0x10 0x66 0x40 0x0 0x0 0x0 0x0 0x0 0x5 0x0 0x0 0x11 0x22 0x33 0x44 0x6 0x43 0x0 0xFFFFFF80 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x4E 0xB2 0xD5 0x41 0x0 0x77 0x47 0x82 0x2 0x0 0x0 0x57 0x13 0x46 0x93 0x95 0x75 0x50 0x85 0x44 0x47 0xD1 0x90 0x52 0x21 0x16 0x72 0x18 0x10 0x0 0x0 0xF 0x5F 0x34 0x1 0x0 0x9F 0x10 0x7 0x6 0x1 0x11 0x3 0xA0 0x0 0x0 0x9F 0x26 0x8 0x7F 0xDE 0x36 0x94 0x33 0xDE 0xDE 0xDE 0x9F 0x27 0x1 0x80
responseLength: 75
77 47 82 02 00 00 57 13 46 93 95 75 50 85 44 47 D1 90 52 21 16 72 18 10 00 00 0F 5F 34 01 00 9F 10 07 06 01 11 03 A0 00 00 9F 26 08 7F DE 36 94 33 DE DE DE 9F 27 01 80 00 F7 BB FF D1 EB FF 51 B6 FB 9E 67 EF DE DF 69 D9 36 7F  wG⸮...W.F⸮⸮uP⸮DGѐR!.r....._4..⸮......⸮..⸮&.⸮6⸮3⸮⸮ޟ'.⸮.⸮⸮⸮⸮⸮⸮Q⸮⸮⸮g⸮⸮⸮i⸮6
About to inList passive target
Sending:  0x0 0x0 0xFF 0x4 0xFFFFFFFC 0xD4 0x4A 0x1 0x0 0xFFFFFFE1 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x1F 0xE1 0xD5 0x4B 0x1 0x1 0x0 0x4 0x20 0x4 0x87 0xE4 0xF4 0xB6 0x13 0x78 0x80 0x72 0x2 0x80 0x31 0x80 0x66 0xB1 0x84 0xC 0x1 0x6E 0x1 0x83 0x0 0x90 0x0 0xC7 0x0 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA
Tag number: 1

Sending:  0x0 0x0 0xFF 0x17 0xFFFFFFE9 0xD4 0x40 0x1 0x0 0xA4 0x4 0x0 0xE 0x32 0x50 0x41 0x59 0x2E 0x53 0x59 0x53 0x2E 0x44 0x44 0x46 0x30 0x31 0x0 0xFFFFFF8F 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0
Reading:  0x0 0x0 0xFF 0x3 0xFD 0xD5 0x41 0x1 0xE9 0x0 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA
Status code indicates an error
About to inList passive target
Sending:  0x0 0x0 0xFF 0x4 0xFFFFFFFC 0xD4 0x4A 0x1 0x0 0xFFFFFFE1 0x0
Reading:  0x0 0x0 0xFF 0x0 0xFF 0x0

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Какая у вас плата? Скорость сериала поставьте меньше, хотя бы 115200. У вас похоже с ошибками передача идет, ъхорошо что хоть что-то идет на такой скорости :)

SadiQ228
Offline
Зарегистрирован: 10.04.2017

слушай я уже и 9600 ставил и 115200 дело тут думается мне в другом в чем то 

у меня arduino nano + pn532 оригинальная от элекхауса

 

в отладке видно что вместо нулей в массиве есть что то, но это ЧТО ТО не то что нужно.. это левые данные которые никак не структурировать откуда они вообще берутся не ясно.

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Попробуйте буфер увеличить в библиотеке, посмотрите что изменится

SadiQ228
Offline
Зарегистрирован: 10.04.2017

ппц даже обидно что я сам нек допер до этого ЗАРАБОТАЛО БРО СПАСИБО!

вот только в чем прикол то? какого Х я должен что то рыть в библиотеке , ведь ясно понятно что это работа с apdu что ответы там порой очень длинные, дак почему бы не сделать буфер побольше?
Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Поэтому приходится с некоторыми проектами таскать всю IDE  с библиотеками, потому что иногда правятся библиотеки и чтобы потом не вспоминать что да где и как проще либо всю иде таскать лио как минимум папку с библиотеками.

chiffa
Offline
Зарегистрирован: 30.04.2014

Привет, а подскажите плиииз, в каком файле увеличивается буфер?