Как я могу прочитать Mi Hce Application с PN532?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как я могу прочитать Mi Hce Application с PN532?

Сообщение Anonymous »

Я хочу, чтобы мой модуль Elechous NFC V3 смог прочитать то, что отправляет мое приложение HCE. Как я могу создать программу для Arduino? Я уже пробовал, но когда я приближаю свой мобильный телефон с запуском приложения, я получаю ошибку в помощи. Я проверил, что приложение и arduino идентичны, но я все еще получаю ошибки.#include
#include
#include

PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);

// AID: F00000000A0101
const uint8_t AID[] PROGMEM = {0xF0, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x01};

void setup() {
Serial.begin(115200);

Serial.println(F("Lector NFC PN532"));
Serial.println(F("================\n"));

nfc.begin();

uint32_t ver = nfc.getFirmwareVersion();
if (!ver) {
Serial.println(F("ERROR: PN532 no detectado"));
Serial.println(F("Verifica conexiones:"));
Serial.println(F("VCC->3.3V, GND->GND"));
Serial.println(F("SDA->A4, SCL->A5"));
while (1);
}

Serial.print(F("Chip PN5")); Serial.println((ver>>24) & 0xFF, HEX);
Serial.print(F("FW v")); Serial.print((ver>>16) & 0xFF);
Serial.print('.'); Serial.println((ver>>8) & 0xFF);

nfc.SAMConfig();

Serial.println(F("\nAcerca tu Android...\n"));
}

void loop() {
uint8_t uid[7];
uint8_t uidLen;

Serial.print('.');

if (nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLen, 1000)) {
Serial.println(F("\n\n=== DETECTADO ==="));
Serial.print(F("UID: "));
for (uint8_t i = 0; i < uidLen; i++) {
if (uid < 0x10) Serial.print('0');
Serial.print(uid, HEX);
if (i < uidLen-1) Serial.print(':');
}
Serial.println(F("\n"));

// SELECT AID
Serial.println(F("SELECT AID..."));
uint8_t sel[] = {0x00, 0xA4, 0x04, 0x00, 0x07,
0xF0, 0x00, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x00};

uint8_t resp[32];
uint8_t respLen = sizeof(resp);

if (!nfc.inDataExchange(sel, sizeof(sel), resp, &respLen)) {
Serial.println(F("ERROR: Sin respuesta"));
Serial.println(F("- App HCE activa?"));
Serial.println(F("- AID correcto?"));
delay(2000);
return;
}

Serial.print(F("Resp (")); Serial.print(respLen); Serial.print(F(" bytes): "));
for (uint8_t i = 0; i < respLen; i++) {
if (resp < 0x10) Serial.print('0');
Serial.print(resp, HEX); Serial.print(' ');
}
Serial.println();

if (respLen >= 2) {
uint8_t sw1 = resp[respLen-2];
uint8_t sw2 = resp[respLen-1];

if (sw1 == 0x90 && sw2 == 0x00) {
Serial.println(F("SELECT OK\n"));
} else if (sw1 == 0x6A && sw2 == 0x82) {
Serial.println(F("ERROR: AID no encontrado"));
Serial.println(F("Verifica AID en Android"));
delay(3000);
return;
} else {
Serial.println(F("ERROR: Status invalido"));
delay(2000);
return;
}
}

// READ
Serial.println(F("READ..."));
uint8_t read[] = {0x00, 0xB0, 0x00, 0x00, 0x00};

respLen = sizeof(resp);
if (!nfc.inDataExchange(read, sizeof(read), resp, &respLen)) {
Serial.println(F("ERROR: Read fallo"));
delay(2000);
return;
}

Serial.print(F("Resp (")); Serial.print(respLen); Serial.print(F(" bytes): "));
for (uint8_t i = 0; i < respLen; i++) {
if (resp < 0x10) Serial.print('0');
Serial.print(resp, HEX); Serial.print(' ');
}
Serial.println();

if (respLen >= 2 && resp[respLen-2] == 0x90 && resp[respLen-1] == 0x00) {
Serial.println(F("READ OK\n"));

int msgLen = respLen - 2;
if (msgLen > 0) {
Serial.println(F("=== MENSAJE ==="));
Serial.print(F("TEXTO: \""));
for (int i = 0; i < msgLen; i++) {
if (resp >= 0x20 && resp

Подробнее здесь: https://stackoverflow.com/questions/797 ... with-pn532
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»