Cordova Ionic Запись метки NFC: Емкость метки равна 0 байт? - PullRequest
0 голосов
/ 31 мая 2018

В настоящее время я пытаюсь реализовать простую функцию чтения / записи в своем родном приложении cordova, и каждый раз, когда я пытаюсь либо стереть, либо написать в теге, я получаю следующую ошибку: Tag capacity is 0 bytes, message is 4 bytes.

ДляЦель информационного обмена: у меня есть следующие теги: https://www.amazon.ca/Robojax-chain-13-56Mhz-Arduino-Raspberry/dp/B079Q9RYL3/ref=sr_1_1?ie=UTF8&qid=1527781307&sr=8-1&keywords=nfc+tags+keychain

Я заказал теги с емкостью 8 Кбит, поэтому я не понимаю, что вызывает сбой записи.

Я использую пример ионного проекта NFC для записи и чтения тегов: https://ionicframework.com/docs/native/nfc/

Вот небольшой кусочек тестового кода для попытки записи / чтения

this.nfc.addNdefListener( () => {
                console.log("Successfully attached NDEF listener");
            }, (err: any) => {
                console.log("error attaching ndef listener", err);
            }).subscribe( (event) => {
                console.log("received NDF message", event);

                if (this.isWriting) {
                    this.nfc.erase().then( () => {
                        console.log("Sucessfully erased the tag");

                        const a = this.ndef.textRecord("Hello world", "en", "usertoken");
                        this.nfc.write([a]).then( () => {
                            console.log("We wrote to the tag");
                        }).catch( (err: any) => {
                            console.log("we could not write to the tag", err);
                        })
                    }, (err: any) => {
                        console.log("Problem while attempting to erase tag", err)
                    });
                }
            })

В моем пользовательском интерфейсе есть кнопка, которая устанавливает this.isWriting в значение true, чтобы мы не писали случайно.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 12 июня 2018

Не стирайте тег, просто напишите свое сообщение в тег.Если тег доступен для записи, новое сообщение будет перезаписано старое сообщение.

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { NFC, Ndef } from '@ionic-native/nfc';

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  constructor(public navCtrl: NavController, private nfc: NFC, private ndef: Ndef) {
    nfc.addNdefListener().subscribe(this.onNdefTagScanned.bind(this));
  }

  onNdefTagScanned(nfcEvent: any) {

    // Create an NDEF text record
    const record = this.ndef.textRecord("Hello world", "en", null);
    // an NDEF message is an array of NDEF records    
    const message = [record];

    // write to the tag
    this.nfc.write(message).then(
      _ => console.log('Wrote message to tag'),
      error => console.log('Write failed', error)
    )
  }

}
...