读块逻辑是这样的
MifareClassic.transceive(Object object)
分别发送数据
1 先验证扇区keyA密码:
指令0x60+块号(1byte)+tagID(4byte)+keyA(6byte)
2 验证通过后进行块数据读取:
指令 0x30 + 块号 可以用于读取某个块的数据
现在遇到的问题是,正常的逻辑是在验证扇区成功后,即transceive的success回调中,得到返回0,验证成功后再去读取块号
nfcAdapater.getMifareClassic().transceive({
data:cmdBuffer,
success: function(res){
//判断验证如果成功
//再次发送transceive读取块数据
}
})
但是这样做并不能读取到数据,反而会收到报错!!同理,采用new Promise同步方法也一样报错!!请问这是为什么?是不是内部的同步机制导致芯片清空了扇区验证的状态?这是bug吗?
经反复测试,直接走异步流程是可以验证通过并读取到块数据的:
//验证扇区KeyA(异步,不等待返回)
//读取块数据(异步,不等待返回)
但是这样写,是否会无法保证逻辑的顺序性:验证扇区成功-->读取块数据
楼主,找到解决方案了吗,我这边验证卡,读数据 都没问题,但是把验证卡,读数据放到Promise 进行封装,就报错了transceive:fail:system internal error: Transceive failed