手机获取nfc-id数组中的数据

This commit is contained in:
WindowBird 2025-11-20 14:19:02 +08:00
parent b51f87790f
commit cb37e2355f

View File

@ -19,9 +19,7 @@
</view>
<view v-if="nfcSupported" class="nfc-status">
<view class="nfc-status-header">
<view
:class="['status-dot', nfcEnabled ? 'online' : 'offline']"
/>
<view :class="['status-dot', nfcEnabled ? 'online' : 'offline']" />
<text class="nfc-status-title">{{ nfcStatusText }}</text>
</view>
<view v-if="nfcError" class="nfc-error-text">
@ -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") {