【发布时间】:2014-12-17 04:46:09
【问题描述】:
我有一个基于unfc.codeplex.com 的C# 程序在卡模拟模式下配置PN532 module (connected via USB To TTL CH340G Converter)。我使用 dotnet SerialPort 类与模块进行通信。当我将手机悬停在模块上时,手机开始振动并尝试检测卡/模块,但无法始终检测到。有时它确实会被检测到,但这不会始终如一地发生。我通过分析Stollmann nfcplayer 的串行端口流量找到了相关的十六进制代码,这对于卡模拟模式非常有效。
有人知道代码有什么问题吗?或者这种方法有什么问题吗?
“ex”方法中添加的Preamble、Postamble、长度和校验和等数据包数据。以下在检测线程之前执行
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);
}
}
【问题讨论】:
标签: serial-port nfc hce