我正在使用连接到windows笔记本电脑的ACR1252设备,并试图模拟带有URL标签的卡片。我能够使用Mifare模拟模式(@michael在基于USB-NFC读取器的访问卡仿真模式中描述的方式)发送一个标记。但不幸的是,对android设备来说,标签的读取并不稳定(只在15次尝试中读取一次)。我决定试试Felica卡模拟。根据ACR1252的文档,必须更改命令中NFCMode的字节:
NfcMode 1 byte. NFC Device Mode.
01h = MIFARE Ultralight Card
03h = FeliCa Card Emulation Mode写命令指定如下:写卡仿真数据命令格式
但似乎这还不够,因为Felica有着不同的记忆结构。我的android手机读取标签,但无法识别NDEF信息的内容。有谁知道如何更改信息以使其可被识别吗?任何建议都是非常感谢的。
当我发送
E0 00 60 1C 01 03 00 18 E1 10 06 00 03 F D1 01 0B 55 01 67 6F 6F 67 6C 65 2E 63 6F 6D FE 00
对费利卡我看到了这个

发布于 2021-02-14 09:08:43
也有同样的问题。我通过发送标签3属性块,然后发送NDEF消息来解决这个问题。
如何构造属性块签出1.1.pdf#page=23&zoom=100,117,344
关于NDEF消息,它需要没有TLV块包装器。
NdefRecord[] records = {
createTextRecord("en", value)
};
NdefMessage message = new NdefMessage(records);
byte[] ndefMessage = message.toByteArray();
StringBuilder hexMessage = new StringBuilder();
for (byte b : ndefMessage) {
hexMessage.append(String.format("%02X", b));
}对于属性块:
byte[] type3AttributeBlock = {
(byte) 0x10, // version
(byte) numberOfBlocks[3], // number of blocks
(byte) numberOfBlocks[3], // blocks to update
(byte) 0x00, // H blocks available
(byte) 0x09, // L block available
(byte) 0x00, // byte 5 unused
(byte) 0x00, // byte 6 unused
(byte) 0x00, // byte 7 unused
(byte) 0x00, // byte 8 unused
(byte) 0x00, // writeF (00: finished)
(byte) 0x00, // RW flag (00: read only)
(byte) messageLengthBytes[1], // ln upper
(byte) messageLengthBytes[2], // ln middle
(byte) messageLengthBytes[3], // ln lower
(byte) 0x00, // H checksum
(byte) 0x00, // L checksum
};
byte[] checkSum = calculateCheckSum(type3AttributeBlock, 14);
type3AttributeBlock[14] = checkSum[2];
type3AttributeBlock[15] = checkSum[3];然后将它们组合在一起,然后用control发送给读者。
https://stackoverflow.com/questions/62388740
复制相似问题