Java Galaxy S3和ACR122之间的P2P NFC通信
我正在做一个项目,需要在android手机和PC之间进行NFC通信。我使用Galaxy S3作为android手机,ACR122作为NFC阅读器。我已经在和尝试了这些应用程序 我使用android sdk中的示例应用程序通过NFC发送NDEF消息 无论我尝试了多少次,我都无法在手机和PC之间建立连接。Android应用程序运行良好,因为它可以通过其他手机推送NDEF消息,但当涉及到连接PC时,它不起作用。当我用手机触摸读卡器时,读卡器上的Led从红色变为闪烁的绿色和橙色,但没有其他变化 有ismb npp java应用程序的日志输出: 得到工厂 获取终端 终端名称:ACS ACR122 0 T=1 称为rightProcedureTarget [调试]{发送[50字节]}0xFF 0x00 0x00 0x00 0x2D 0xD4 0x8C 0x01 0x00 0x00 0x00 0x00>0x00 0x40 0x01 0xFE 0x0F 0xBB 0xBA 0xA6 0xC9 0x89 0x00 0x00 0x00 0x00 0x00 0x00 0x00>0xFF 0x01 0xFE 0x0F 0xBB 0xA6 0xC9 0x89 0x00 0x00 0x06 0x46 0x66 0x6D 0x01 0x01>0x10 0x00 it.ismb.npp.IsmbNppException:传输数据时出现问题 [调试]{发送[7字节]}0xFF 0x00 0x00 0x00 0x02 0xD4 0x86 [调试]{发送[26字节]}0xFF 0x00 0x00 0x00 0x15 0xD4 0x8E 0x05 0x20 0x06 0x0F 0x63>0x6F 0x6D 0x2E 0x61 0x6E 0x64 0x72 0x6F 0x69 0x64 0x2E 0x6E 0x70 0x70 ismbnpconnection.transceive(ismbnpconnection.java:281) 位于it.ismb.npp.ismbnpconnection.rightProcedureTarget(ismbnpconnection.java:301) 位于it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) 位于it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) 位于java.util.TimerThread.mainLoop(未知源) 在java.util.TimerThread.run处(未知源) it.ismb.npp.IsmbNppException:传输数据时出现问题 ismbnpconnection.transceive(ismbnpconnection.java:281) 位于it.ismb.npp.ismbnpconnection.rightProcedureTarget(ismbnpconnection.java:306) 位于it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) 位于it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) 位于java.util.TimerThread.mainLoop(未知源) 在java.util.TimerThread.run处(未知源) 线程“Timer-0”java.lang.IllegalStateException中出现异常:卡已被删除 位于sun.security.smartcardio.CardImpl.checkState(未知源) 在sun.security.smartcardio.ChannelImpl.checkClosed(未知来源) 在sun.security.smartcardio.ChannelImpl.transmit(未知来源) ismbnpconnection.transceive(ismbnpconnection.java:263) 位于it.ismb.npp.ismbnpconnection.rightProcedureTarget(ismbnpconnection.java:317) 位于it.ismb.npp.SenderToPhone$ThreadSender.run(SenderToPhone.java:90) 位于it.ismb.npp.SenderToPhone$InitiatorTask.run(SenderToPhone.java:75) 位于java.util.TimerThread.mainLoop(未知源) 在java.util.TimerThread.run处(未知源) 我已经使用了我能找到的所有驱动程序(包括最新的驱动程序),但问题仍然存在Java Galaxy S3和ACR122之间的P2P NFC通信,java,android,nfc,android-beam,nfc-p2p,Java,Android,Nfc,Android Beam,Nfc P2p,我正在做一个项目,需要在android手机和PC之间进行NFC通信。我使用Galaxy S3作为android手机,ACR122作为NFC阅读器。我已经在和尝试了这些应用程序 我使用android sdk中的示例应用程序通过NFC发送NDEF消息 无论我尝试了多少次,我都无法在手机和PC之间建立连接。Android应用程序运行良好,因为它可以通过其他手机推送NDEF消息,但当涉及到连接PC时,它不起作用。当我用手机触摸读卡器时,读卡器上的Led从红色变为闪烁的绿色和橙色,但没有其他变化 有ism
设备可能有问题吗?还是我在这里遗漏了什么?你在运行什么版本的Android?NPP只适用于旧版本的Android(我相信是ICS之前的版本) 对于ICS和JellyBean,尝试使用SNEP协议。您正在使用的项目的作者在此处有SNEP的版本:
尝试此操作以获取NfcAdapter nfcP2PAdapter=NfcAdapter.getDefaultAdapter(recentContext.getApplicationContext()) //recentContext是活动(此)
它对你有用,对我有用你所说的错误来自NppConnection.java中的收发器方法。我建议您首先将手机放在读卡器上(让读卡器的LED变为绿色),然后再次运行应用程序。看看这是否有效。如果没有,则在收发器方法中放置一个断点,并检查SW1和SW2的值(如果命令成功,您将期望SW1=0x90和SW2=0x00)。如果出现错误,您将得到sw2不等于0x00或sw1=0x63
据我所知,即使您使用的是较新版本的android,并且您的任何一台设备都不支持snep,它们也会退回到NPP。您的设备是否可以用于读卡等?阿尔索tryhttp://www.libnfc.org 对于P2P。