我正在开发一个需要在安卓手机和 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..
[debug] {sending [50 bytes]} 0xff 0x00 0x00 0x00 0x2d 0x2d 0x8c 0x8c 0x01 0x00 0x00 0x00 0x00 0x00 0x00> 0x40> 0x4010101010X010x0FE 0x0F 0xBBBBBB 0xBA 0xBA 0XBA 0XBA 0XC9 0XC9 0X000BER 0X00 0X00 0BER 0X000BER 0X00 0BBER 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 0x706 0x64 0xE 2
在 it.ismb.npp.IsmbNppConnection.transceive(IsmbNppConnection.java:281)
在 it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.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:传输数据的问题
在 it.ismb.npp.IsmbNppConnection.transceive(IsmbNppConnection.java:281)
在 it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.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(未知来源)
在 it.ismb.npp.IsmbNppConnection.transceive(IsmbNppConnection.java:263)
在 it.ismb.npp.IsmbNppConnection.rightProcedureTarget(IsmbNppConnection.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(未知来源)
我已经使用了我能找到的所有驱动程序(包括最新的驱动程序),但问题仍然存在。
设备可能有问题吗?或者我在这里错过了什么?