Serial port PN532 NFC卡仿真检测问题

Serial port PN532 NFC卡仿真检测问题,serial-port,nfc,hce,Serial Port,Nfc,Hce,我有一个基于的C#程序,用于在卡模拟模式下配置()。Im使用dotnet类与模块通信。当我将手机悬停在模块上方时,手机开始振动并尝试检测卡/模块,但检测结果并不一致。偶尔会被检测到,但这种情况并不总是发生。我通过分析串行端口通信量找到了相关的HEXCODE,该通信量在卡仿真模式下运行良好 有人知道代码有什么问题吗?或者这种方法有什么问题吗 在“ex”方法中添加的前导码、后导码、长度和校验和以及其他分组数据。在检测线程之前执行以下操作 byte[] cmd0 = { 0x14, 0x01

我有一个基于的C#程序,用于在卡模拟模式下配置()。Im使用dotnet类与模块通信。当我将手机悬停在模块上方时,手机开始振动并尝试检测卡/模块,但检测结果并不一致。偶尔会被检测到,但这种情况并不总是发生。我通过分析串行端口通信量找到了相关的HEXCODE,该通信量在卡仿真模式下运行良好

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

在“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);

        }
    }

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

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

顺便说一句,你应该试试斯托尔曼图书馆。它没有那么昂贵,而且从长远来看,总体上可能更便宜。经过近20人-年的开发,您在项目后期将面临的所有小怪癖和问题都已经解决


Disclamer:我为Stollmann工作,花了3.5年的时间完全在这个NFC堆栈上。

我增加了400毫秒线程睡眠,但仍然没有运气。我可以看到很多IRP_MJ_设备控制(IOCTL_串行_GET_COMMSTATUS)和IRP_MJ_设备控制(IOCTL_串行_WAIT_ON_MASK)请求。你知道怎么把它最小化吗?