SPI проблема хранения данных подскажите
- Войдите на сайт для отправки комментариев
Пнд, 13/11/2017 - 17:13
Ну вообщем я принимаю ответ от смарт карты связкой ардуино+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); } } } } }
Это из Adafruit_PN532.cpp
Включите вывод отладочной информации PN532DEBUG там видно будет что к чему.
я включил там ничего не понятно
Какая у вас плата? Скорость сериала поставьте меньше, хотя бы 115200. У вас похоже с ошибками передача идет, ъхорошо что хоть что-то идет на такой скорости :)
слушай я уже и 9600 ставил и 115200 дело тут думается мне в другом в чем то
у меня arduino nano + pn532 оригинальная от элекхауса
в отладке видно что вместо нулей в массиве есть что то, но это ЧТО ТО не то что нужно.. это левые данные которые никак не структурировать откуда они вообще берутся не ясно.
Попробуйте буфер увеличить в библиотеке, посмотрите что изменится
ппц даже обидно что я сам нек допер до этого ЗАРАБОТАЛО БРО СПАСИБО!
Поэтому приходится с некоторыми проектами таскать всю IDE с библиотеками, потому что иногда правятся библиотеки и чтобы потом не вспоминать что да где и как проще либо всю иде таскать лио как минимум папку с библиотеками.
Привет, а подскажите плиииз, в каком файле увеличивается буфер?