收藏
回答

NfcA.transceive,返回13017,并且不知道data的指令应该如何填写

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug NfcA.transceive 微信安卓客户端 7.0.20 7.0.18


2020.12.10 18:51

13017 相关读写操作失败

并且不知道data的指令应该如何填写

回答关注问题邀请回答
收藏

7 个回答

  • 社区技术运营专员-Jahozheng
    社区技术运营专员-Jahozheng
    2020-12-16

    小程序只是将系统的读写能力开放出去,没有额外的定义;具体对于什么类型的标签,有什么指令可以具体做什么事情,需要开发者自己去了解标准的情况

    2020-12-16
    有用 1
    回复 3
    • 。。。
      。。。
      2020-12-16
      官方给的demo ,也有问题,在哪都复制这一句话呢
      2020-12-16
      回复
    • Darryl
      Darryl
      2021-03-17
      是呀,比如身份证是什么标准呢?
      2021-03-17
      回复
    • 红薯
      红薯
      2022-05-19
      这个标准有地方了解吗
      2022-05-19
      回复
  • 何誌祥
    何誌祥
    2021-08-10

    请问解决了么

    2021-08-10
    有用 1
    回复
  • 沙水
    沙水
    2021-01-06

    楼主 这个问题解决了吗 , 是这个里面的参数吗

    2021-01-06
    有用 1
    回复 4
    • DMfire
      DMfire
      2021-02-01
      你那边可以使用NfcA.transceive读写数据吗?能发一下demo吗?
      2021-02-01
      回复
    • Darryl
      Darryl
      2021-03-17
      你那个是读取身份证吗?能看下代码?
      2021-03-17
      回复
    • 沙水
      沙水
      2021-04-07回复DMfire
      我这边不适用你, NfcA.transceive没有用到, 直接取的int32Array
      2021-04-07
      回复
    • 沙水
      沙水
      2021-04-07回复Darryl
      我的这个是读取 液化气阀门,  不是身份证, 身份证没取过
      2021-04-07
      回复
  • 开心小苹果
    开心小苹果
    2023-07-04
    要先做验证,再读块
    
     function discoverHandler(res{
          if (res.techs.includes(nfc.tech.nfcA)) {
            var arrayBuffer = new Uint8Array(res.id);
            var tagId = me.bufArrToHex(arrayBuffer);
            me.setData({
              tagId: tagId
            });
            const nfcA = nfc.getMifareClassic();
            nfcA.connect({
              success:function(res){
                //按块读取NFC的数据
                const params = {
                  cmd0x60// 验证指令
                  block0x03// 扇区
                  cardId: [arrayBuffer[0], arrayBuffer[1], arrayBuffer[2], arrayBuffer[3]], // 卡片id 获取从 NFCAdapter.onDiscovered((res)=>{ // res中含有卡片id });
                  key: [0xff0xff0xff0xff0xff0xff], // 验证密钥
                };
                const arr = [params.cmd,params.block,...params.cardId,...params.key];
                const writeBuffer = new Uint8Array(arr).buffer;
                console.log(writeBuffer)
                //认证
                nfcA.transceive({
                  data: writeBuffer,
                  success:function(res){
                    console.log(res)
                    //读取扇区
                    const arr = [0x30,params.block];
                    const writeBuffer = new Uint8Array(arr).buffer;
                    nfcA.transceive({
                        data: writeBuffer,
                        success:function(res){
                          var arrayBuffer = new Uint8Array(res.data);
                           var block = me.bufArrToHex(arrayBuffer);
                           console.log(block)
                        },
                        fail:function(res){
                          console.log(res)
                        }
                    })
                  },
                  fail:function(res){
                    console.log(arguments)
                  }
                });
              },
              fail:function(){
                wx.showToast({
                  title'nfc读取失败',
                })
              }
            });
            console.log(nfcA)
    
    
          }
        }
    
    2023-07-04
    有用
    回复
  • DMfire
    DMfire
    2021-01-30

    楼主 现在这个问题解决了吗?

    2021-01-30
    有用
    回复 1
    • 沙水
      沙水
      2021-04-07
      我这边只做读取, 需要的值 直接在扇盘取 int32Array
      2021-04-07
      回复
  • 铭记
    铭记
    2020-12-30

    写入进去都是0

    2020-12-30
    有用
    回复
  • 。。。
    。。。
    2020-12-16

    楼主,你这个问题解决了吗

    2020-12-16
    有用
    回复 3
    • 北笙
      北笙
      2020-12-16
      还没有
      2020-12-16
      回复
    • 沙水
      沙水
      2021-01-06回复北笙
      楼主 现在这个问题解决了吗
      2021-01-06
      回复
    • 何誌祥
      何誌祥
      2021-08-10回复北笙
      楼主这个问题解决了么
      2021-08-10
      回复
登录 后发表内容
问题标签