From cb37e2355ff164f3d368619bfc8431b2733705b7 Mon Sep 17 00:00:00 2001 From: WindowBird <13870814+windows-bird@user.noreply.gitee.com> Date: Thu, 20 Nov 2025 14:19:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E6=9C=BA=E8=8E=B7=E5=8F=96nfc-id?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E4=B8=AD=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/memorial/nfcPairing.vue | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/pages/memorial/nfcPairing.vue b/pages/memorial/nfcPairing.vue index bc0cd2a..238b811 100644 --- a/pages/memorial/nfcPairing.vue +++ b/pages/memorial/nfcPairing.vue @@ -19,9 +19,7 @@ - + {{ nfcStatusText }} @@ -609,7 +607,7 @@ export default { this.nfcError = error.message || "初始化失败"; } // #endif - + // #ifndef MP-WEIXIN // 非微信小程序环境,不支持 NFC console.warn("NFC 功能仅在微信小程序中支持"); @@ -637,7 +635,7 @@ export default { console.error("启动 NFC 发现失败:", err); this.nfcEnabled = false; this.nfcError = err.errMsg || "启动失败"; - + // 如果是权限问题,给出提示 if (err.errMsg && err.errMsg.includes("permission")) { this.nfcError = "需要 NFC 权限,请在设置中开启"; @@ -655,7 +653,7 @@ export default { }, handleNfcDiscovered(res) { console.log("发现 NFC 标签:", res); - + try { let cardNo = ""; @@ -672,21 +670,22 @@ export default { // 将 ArrayBuffer 转换为十六进制字符串 const uint8Array = new Uint8Array(res.id); const bytes = Array.from(uint8Array); - + console.log("=== NFC 卡号提取详情 ==="); console.log("ArrayBuffer 字节长度:", res.id.byteLength); console.log("ArrayBuffer 字节数组(十进制):", bytes); - console.log("ArrayBuffer 字节数组(十六进制):", bytes.map(b => "0x" + b.toString(16).padStart(2, "0").toUpperCase())); - - // 转换为十六进制字符串(每字节两位,不足补0) + console.log( + "ArrayBuffer 字节数组(十六进制):", + bytes.map( + (b) => "0x" + b.toString(16).padStart(2, "0").toUpperCase(), + ), + ); + + // 转换为十六进制字符串(每字节两位,不足不补0) // NFC 卡号通常按照字节顺序(大端序)存储 - cardNo = bytes - .join("") - .toUpperCase(); - - // 如果字节数组是 [0, 0, 5, 32],则卡号为 "00000520" - // 如果字节数组是 [32, 5, 0, 0],则卡号为 "20050000" - console.log("转换后的卡号(十六进制字符串):", cardNo); + cardNo = bytes.join("").toUpperCase(); + + console.log("转换后的卡号(十进制字符串):", cardNo); console.log("卡号长度:", cardNo.length, "字符"); console.log("========================"); } else if (typeof res.id === "string") {