如题,大致流程是先调用wx.getNFCAdapter,然后调用adapter.startDiscovery,然后调用adapter.onDiscovered,然后调用nfcA.connect,然后调用nfcA.transceive,此时返回13017错误。
基础库版本:2.14.1
Android版本:10
手机型号:一加5t
NFC相关代码如下:
NFCReadCard: function(){
let _this = this
let adapter = wx.getNFCAdapter()
console.log(adapter)
adapter.startDiscovery({success:(e)=>{
console.log('开始监听贴卡',e)
adapter.onDiscovered(function (res){
console.log('读到卡片了', res);
//console.log(res.techs);
if(res.techs.includes(adapter.tech.nfcA)){
console.log('发现'+adapter.tech.nfcA+'卡');
let nfcA = adapter.getNfcA();
app.nfcA = nfcA;
nfcA.connect({
success: function(res){
console.log('设备已连接', res)
// nfcA.getAtqa({
// success: function(res){
// console.log('Atqa', res)
// }
// });
// nfcA.getSak({
// success: function(res){
// console.log('Sak', res)
// }
// });
nfcA.isConnected({
success: function(res){
console.log('Connected')
}
});
// let byteArr = [0x00, 0xa4, 0x00, 0x00, 0x02, 0xdf, 0x01]
// let byteArrBuffer = new Uint8Array(byteArr).buffer
let dataBytes = [0x00, 0x84, 0x00, 0x00, 0x02]
let dataBuffer = new Uint8Array(dataBytes).buffer
nfcA.transceive({
// data:new ArrayBuffer(0),
data: dataBuffer,
success: function(res){
console.log('发送数据成功, 接收数据如下:', res);
},
fail: function(err){
console.log('发送数据失败', err);
}
})
},
fail: function(err){
console.log('设备联接错误', err);
}
});
}
})
}})
}
你好,请先参考下该帖:NfcA.transceive,返回13017,并且不知道data的指令应该如何填写
https://developers.weixin.qq.com/community/develop/doc/00006a838c0b50ba106b1785f51400
nfc-a 协议是14443-a属于isodep的协议。所以一般卡抛出的tag中会包含 nfca和isodep2个tag 。只需要把使用isodep进行连接和发送数据接口。
如果偏偏要使用nfc-a,需要底层的一些设置,不知道怎么搞。我是用isodep成功的,pc的软件是使用nfc-a。
首先,向硬件方面确认发送数据的指令是否正确,可以让硬件工程师检测你这边有没有向NFC设备发送数据,其次,要确保读卡方式是否正确,有些只能用NFC-A,有些事ISO-DEP,可以都试下。