PN532 NFC卡仿真检测问题

时间:2014-12-17 04:46:09

标签: serial-port nfc hce

我有一个基于unfc.codeplex.com的C#程序,可以在卡仿真模式下配置PN532 moduleconnected via USB To TTL CH340G Converter)。我使用dotnet SerialPort类与模块进行通信。当我将手机悬停在模块上时,手机开始振动并尝试检测卡/模块,但它不能始终检测到。偶尔它会被检测到,但这不会一直发生。我通过分析Stollmann nfcplayer的串行端口流量找到了相关的十六进制代码,这对于卡仿真模式非常有效。

有没有人知道代码有什么问题?或者这种方法有什么问题吗?

在“ex”方法中添加的前导码,后同步码,长度和校验和以及其他分组数据。以下在检测线程之前执行

     byte[] cmd0 = { 0x14, 0x01, 0x00, 0x01 };
     this.pn532.ex(cmd0);

     byte[] cmd1 = { 0x32, 0x02, 0x00, 0x0F, 0x0A };
     this.pn532.ex(cmd1);

     byte[] cmd2 = { 0x32, 0x05, 0xFF, 0xFF, 0xFF };
     this.pn532.ex(cmd2);

以下是在线程中运行

    private void HCEDetectionThread()
    {
        while (this.isRunning)
        {
            byte[] cmd1 = { 0x8C, 0x05, 0x04, 0x00, 0x14, 0x44, 0x3A, 
                        0x20, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 
                        0x44, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 
                        0x00, 0x00, 0x00 };
            this.pn532.ex(cmd1);

            byte[] cmd2 = { 0x14, 0x01, 0x00, 0x01 };
            this.pn532.ex(cmd2);

            byte[] cmd3 = { 0x32, 0x01, 0x00 };
            this.pn532.ex(cmd3);

        }
    }

1 个答案:

答案 0 :(得分:0)

如果HCEDetectionThread不断向PN532发送帧。 NFC芯片很少有时间建立连接。这就是它失败的原因。

尝试在最后一帧之后的100到300毫秒范围内添加暂停。

不过,你应该试试Stollmann图书馆。它不是那么昂贵,从长远来看,整体而言可能更便宜。进入了近20个人年的开发阶段,您在项目后期所面临的所有小问题和问题都已经解决了。

Disclamer:我曾在Stollmann工作,并且在这个NFC堆栈上花了3。5年的全职时间。