api:NfcA.transceive
基础库:2.14.2
微信版本:7.0.21
华为手机
能读到卡片的类型,也能连接上卡片,nfcA.connect可以成功,但是transcevie就失败了
错误信息:transceive:fail:system internal error
错误code:13017
const app = getApp()
Page({
data: {
},
onLoad: function () {
const adapter = wx.getNFCAdapter();
console.log(adapter);
this.adapter = adapter;
adapter.onDiscovered(function (res){
console.log('读到卡片了', res);
//console.log(res.techs);
if(res.techs.includes(adapter.tech.nfcA)){
console.log('发现'+adapter.tech.nfcA+'卡');
const nfcA = adapter.getNfcA();
app.nfcA = nfcA;
nfcA.connect({
success: function(res){
console.log('设备已连接', res)
nfcA.transceive({
data:new ArrayBuffer(0),
success: function(res){
console.log('发送数据成功, 接收数据如下:', res);
},
fail: function(err){
console.log('发送数据失败', err);
}
})
},
fail: function(err){
console.log('设备联接错误', err);
}
});
}
})
adapter.startDiscovery({
success: function(res){
console.log('成功发现设备',res);
},
fail: function(err){
console.log('发现设备出错', err);
},
complete: function(){
}
});
},
onHide() {
if (this.nfc) {
this.nfc.stopDiscovery()
}
}
})
指令没写对,小程序只是将系统的读写能力开放出去,没有额外的定义;具体对于什么类型的标签,有什么指令可以具体做什么事情,需要开发者自己去了解标准的情况
使用的是这个代码片段,调用nfcA.transceive 还是报13017的错误
data:new ArrayBuffer(0),
这个指令参数必须赋值正确,要看根据标签实际所用的的指令,来写这个指令数组,例如,我手头有一款测温标签,有一条测温指令是0x40,0xc0,0x06,0x00,0x00,0x00,0x00,那么,可以这样写,var array = new Uint8Array([0x40,0xc0,0x06,0x00,0x00,0x00,0x00]);//指令数组必须正确,多一个或少一个字节,都会出现出错。
var NFCdata = array.buffer
data:NFCdata
其他代码不变。
指令怎么写才正确
指令不对。我试了NTAG213的指令都可以,1b授权 和30指令读取数据都可以的。另外transceive data 应该是ArrayBuffer。 返回的data 也是个ArrayBuffer
有大佬解决这个问题了吗
大佬解决了吗?我也遇到这个问题
NFCA指令 (IOS 14443-3A)
Read ID 0x78 Read all bytes 0x00 Read 8 bytes 0x02 Read 1 bytes 0x01 Read 16 bytes 0x30 Read segment 0x10 Write 4 bytes 0xa2 Write 1 bytes with erase 0x53 Write 1 bytes without erase 0x1a Write 8 bytes with erase 0x54 Write 8 bytes without erase 0x1b Sector select 0xc2 Get version 0x60 eg: Read 16 bytes from block 0x04 0x30:0x04 eg: Write FF:FF:FF:FF on block 0x04 0xa2:0x04:0xff:0xff:0xff:0xff Check command 0x06 Check response 0x07 Update command 0x08 Update response 0x09 Select 0xa4 Select by name 0x04 Select by file id 0x00 Read binary 0xb0 Update binary 0xd6 Read ECC Signature 0x3c:0x00 Read counter 0x39:0x02
麻烦大佬帮帮忙呀
大佬解决了吗,我也遇到这个问题了
解决了嘛?
大佬们解决了吗我也是遇到了这个问题