在进行M1 s50卡的读写开发,但是在验密过程一直失败
验密指令:[0x60, 0x04, 0x55, 0xED, 0xA1, 0x3F,0xC3, 0x37, 0x21, 0xA4, 0x12, 0x68]
秘钥和ID号是正确的,(ps:但是ID号随便写什么,都和返回结果没关系)
返回结果是 {errMsg: "transceive:ok", data: ArrayBuffer(1)} data里面是 0: 0
其他的命令比如读、写、选卡等的话 可以成功 但是操作也是无效的,返回的结果大概是这种[-78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
我的问题和您类似,读取 mifare classic 的标签,验密结果是 [0],读取数据块的结果是 [10, -78]
尝试添加了 isConnected 的判断,结果是 { isConnected: false, errMsg: "isConnected:ok", errno: 0 }
执行读取命令,transceive 方法的参数应该是多少?似乎需要 4 个字节是吗?
上面这些返回值应当如何解释?正确的情况返回值是多少呢?
您是怎样解决问题的?可以详细说说吗
问题解决了,所有的读写卡验密操作前 必须先isconnected
[0x60, 0x01, 0x43, 0x30, 0x2e, 0xe2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF],
[0x30,0x01, 0x43, 0x30, 0x2e, 0xe2],
];
nfcA.isConnected({
success: function () {
console.log("isConnected success: step:", step)
let dataBytes = dataBytesArray[step];
let dataBuffer = new Int8Array(dataBytes).buffer
nfcA.transceive({
data: dataBuffer,
success: function (res) {
console.log("发送数据成功2", dataBytes, ", 接收数据如下:", res)
transceiveCallBack(nfcA, ++step)
},
fail: function (err) {
console.log('发送数据失败2', dataBytes, "err:", err);
}
})
},
fail: function (err) {
console.log('isConnected failed');
}
})
我将 transceive 放到 isConnected sunccess 里面执行也不行