如何将Android应用程序用作MIFARE卡?

时间:2019-01-21 21:08:55

标签: android xamarin nfc mifare ndef

如何从手机向MIFARE读卡器发送NDEF消息?

在读者方面,我使用https://github.com/AlterCodex/nxppy中的这段代码:

import nxppy
import ndef

# Instantiate reader
mifare = nxppy.Mifare()

# Select tag
uid = mifare.select()

# Read NDEF data
ndef_data = mifare.read_ndef()

# Parse NDEF data
ndef_records = list(ndef.message_decoder(ndef_data))

当我尝试使用此代码发送NDEF消息时,出现内存错误:

    public NdefMessage CreateNdefMessage(NfcEvent e)
    {
        NdefRecord uriRecord = NdefRecord.CreateUri("http://myURL");
        NdefMessage message = new NdefMessage(new[] { uriRecord });
        return message;
    }

对于此代码,我遇到错误:ndef_data = milfare.read_ndef()MemoryError。

如何编辑此解决方案以使其起作用?我只想从带有nfc-explorer板的Android应用程序中读取一条简单的NDEF消息,但我完全困惑如何执行此操作。

1 个答案:

答案 0 :(得分:1)

import pandas as pd import numpy as np import matplotlib.pyplot as plt data = {'Partyname': ['Independents', 'INC','Independents','Independents','Independents'], 'Year': [1977, 1977,1980,1980,1980], "totPoll":[25168,35400,109,125,405]} df = pd.DataFrame(data) grpByParty = df.groupby(['Partyname']) sumVotes = grpByParty['totPoll'].agg(np.sum) y_values = sumVotes.keys().tolist() y_pos = np.arange(len(y_values)) votes = sumVotes.tolist() plt.bar(y_pos, votes, align='center', alpha=0.5) plt.xticks(y_pos, y_values) plt.ylabel('votes') plt.title('party wise votes ') plt.show() 似乎期望包含NDEF消息的MIFARE Ultralight(或其他2型标签)。您根本无法在Android上模拟MIFARE(Ultralight)标签(请参见Emulate Mifare card with Android 4.4)。

在使用mifare.read_ndef()(或实际上为public NdefMessage CreateNdefMessage(NfcEvent e) {})时,您在Android上所做的工作是定义了NDEF消息,该消息应以对等模式(使用SNEP + LLCP)传输+ NFC-DEP)。这与您读取(或仿真)标签时的协议栈完全不同。因此,当您想在Android上使用点对点模式时,您将需要使用在另一端也支持点对点模式(和SNEP)的库。