您好,请问解决了嘛?
MifareClassic.transceive 如何读写?微信小程序的文档上好像提到了 对于MifareClassic的分块读写 指令 0x30 + 块号 可以用于读取某个块的数据指令 0xA0 + 块号 + 待写入数据 可以用于往某个块写入数据https://developers.weixin.qq.com/miniprogram/dev/api/device/nfc/MifareClassic.html 在搜索卡的过程中,能看到命令行打印的日志是支持 MifareClassic的 但是我们在读数据的时候遇到了问题,按道理来说下面的代码应该读取到一块的数据,但是每次不管是读什么卡返回的都是 0x04 (请问是不是读取卡片之前,还需要其它的命令,例如授权,希望有大神可以出来指点一下) const READ_FIRST = '3000' // 十六进制命令字符串 读取第一块的数据 var adapter = null async function testNFC() { adapter = wx.getNFCAdapter() console.log('wx.getNFCAdapter', adapter) initAdapter(adapter) try { // 小程序api promise化的帮助函数 let res = await utils.apiPromise(adapter.startDiscovery) console.log('startDiscovery', res) } catch (e) { console.log(e) utils.showMsg('nfc识别失败,错误码' + e.errCode + `错误信息:${e.errMsg}`) } } function initAdapter(adapter) { // 监听发现卡片的事件 adapter.onDiscovered(async function (card) { console.log('onDiscovered', card) adapter.stopDiscovery() adapter.offDiscovered() let res = {} const instance = adapter.getMifareClassic() instance.connect({ success: async res => { let res1 = {} res1 = await runCommand(instance, READ_FIRST) // read first console.log(res1) }, fail: e => console.error(e) }) }) } function runCommand(instance, command) { console.log('runCommand', command) if (typeof command === 'string') { // 十六进制字符转ArrayBuffer 此函数不在此处列出 command = hexStringToArrayBuffer(command) } return new Promise(function(resolve, reject) { instance.transceive({ data: command, success: res => { // buffer 转十六进制字符串的函数 不在此处列出 console.log('runCommand success:', res, buf2hex(res.data)) resolve( buf2hex(res.data) ) }, fail: err => { console.log('runCommand error:', err) reject(err) } }) }) }
2020-11-22你不是一个人
云开发登录失败- 当前 Bug 的表现(可附上截图) [图片] - 预期表现 代打开云开发 - 复现路径 打开微信开发工具,点击云开发 - 提供一个最简复现 Demo
2019-07-24