微信小程序nfc指令异常记录

小程序nfc相关代码: 

readEvent(){
    
    wx.getNFCAdapter().startDiscovery({
      success:(res)=>{
        console.log('--------------start--------')
        console.log(res);
        wx.getNFCAdapter().onDiscovered(
          callback=>{
            console.log('------------onDiscovered----------')
            console.log(callback);
            console.log(Array.from(new Uint8Array(callback.id)))
            console.log('------------getNfcA----------')
            console.log('------------connect----------')
            wx.getNFCAdapter().getNfcA().connect({
              success:(res)=>{
                console.info(res)
                console.log('------------transceive----------')
                wx.getNFCAdapter().getNfcA().transceive({
                  data: new Uint8Array([0x30, 0x04]).buffer, // 必须要传入 ArrayBuffer
                  success: (res) => {
                      // res.data 是 ArrayBuffer,转成数组方便查看
                      console.log(Array.from(new Uint8Array(res.data)));
                  },
                  fail:(err)=>{
                    console.log(err)
                  }
              })
              
              },
              fail:(err)=>{
                console.error(err);
              }
            })
          }
        );
      },
      fail:(err)=>{

      }
    });
    
  },

connect 成功但是指令报错,报错信息:

transceive:fail:system internal error:tag was lost

解决方式,替换NfcA

readEvent(){
    
    wx.getNFCAdapter().startDiscovery({
      success:(res)=>{
        console.log('--------------start--------')
        console.log(res);
        wx.getNFCAdapter().onDiscovered(
          callback=>{
            console.log('------------onDiscovered----------')
            console.log(callback);
            console.log(Array.from(new Uint8Array(callback.id)))
            console.log('------------getNfcA----------')
            console.log('------------connect----------')
            wx.getNFCAdapter().getIsoDep().connect({
              success:(res)=>{
                console.info(res)
                console.log('------------transceive----------')
                wx.getNFCAdapter().getIsoDep().transceive({
                  data: new Uint8Array([0x30, 0x04]).buffer, // 必须要传入 ArrayBuffer
                  success: (res) => {
                      // res.data 是 ArrayBuffer,转成数组方便查看
                      console.log(Array.from(new Uint8Array(res.data)));
                  },
                  fail:(err)=>{
                    console.log(err)
                  }
              })
              
              },
              fail:(err)=>{
                console.error(err);
              }
            })
          }
        );
      },
      fail:(err)=>{

      }
    });
    
  },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序支持NFC(Near Field Communication)的读写功能,可以通过对NFC标签的读取和写入实现与设备的交互。在微信小程序中,可以通过wx.startHCE()方法启动HCE服务,使手机模拟一个NFC卡片。可以通过wx.onHCEMessage()方法监听HCE服务接收到的消息,并通过wx.sendHCEMessage()方法发送消息。这样,可以实现小程序与其他NFC设备之间的通信。 要使用NFC读写功能,首先需要在小程序的app.json文件中声明NFC权限。例如,在"permission"字段中添加"nfc"权限。然后,在小程序的页面中,使用wx.startHCE()方法来启动HCE服务。在启动HCE服务之后,可以监听HCE服务接收到的消息,并处理这些消息。可以使用wx.onHCEMessage()方法来监听HCE服务接收到的消息,并在回调函数中处理这些消息。同时,可以使用wx.sendHCEMessage()方法来向HCE服务发送消息。 需要注意的是,NFC读写功能在不同的手机上的支持程度可能会有所差异。在使用NFC读写功能时,建议进行兼容性测试,并提供适当的错误处理机制,以确保用户的良好体验。 总结起来,要在微信小程序中实现NFC的读写功能,需要进行以下步骤: 1. 在app.json文件中声明NFC权限。 2. 使用wx.startHCE()方法启动HCE服务。 3. 使用wx.onHCEMessage()方法监听HCE服务接收到的消息,并进行处理。 4. 使用wx.sendHCEMessage()方法向HCE服务发送消息。 希望以上信息对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值