前端 nfc读取扇区参数

news/2024/10/21 5:09:02/

背景: 由于各种厂商不同,有些厂商写卡有一下其他不支持的地方。所以由客户端读取扇区。网上参数很不详细,这边的经验希望能帮到大家。

  1. 前端-安卓读取
  2. 前端-sdk(我这边对接的是feishu,应该类似于小程序) 资料好难找,看网上只有部分小程序的,基本上都不符合。下面是我们这边已经实现的。注释里有代码说明
安卓读取扇区

这个对于前端来说就是纯方法的调用 直接上代码

//sassApp 代码基于vueconnectWebViewJavascriptBridge(callback) {if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }window.WVJBCallbacks = [callback];var WVJBIframe = document.createElement('iframe');WVJBIframe.style.display = 'none';WVJBIframe.src = 'https://__bridge_loaded__';document.documentElement.appendChild(WVJBIframe);setTimeout(function () { document.documentElement.removeChild(WVJBIframe) }, 0)},connectWebViewJavascriptBridgeNfc() {let that = this// 方法由按照提供that.connectWebViewJavascriptBridge((bridge) => {bridge.callHandler('triggerNewlandCard', (responseData) => {});bridge.registerHandler("receiveNFC", function (data, responseCallback) {console.log("安卓读取扇区返回的data", data)}}}
前端-SDK
let adapter = window.htonejssdk.nfc.getNFCAdapter();
adapter.startDiscovery({success(res) {adapter.onDiscovered((res => {// 获取卡号uidsconst uidList = Array.from(new Uint8Array(res.uid));let mifareClassic = adapter.getMifareClassic()mifareClassic.connect({success(res2) {console.log('mifareClassic.transceive connect', res2)// 0x60-认证指令   0x03-扇区   uidList-卡ids    0xff x 6-秘钥mifareClassic.transceive({data: new Uint8Array([0x60, 0x03, ...uidList, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]).buffer,success(res3) {// 0x30-读取指令 0x30-扇区(这里需要和认证扇区保持一致,不然会报错)mifareClassic.transceive({data: new Uint8Array([0x30, 0x03]).buffer,success(res4) {let cardInfo = Array.from(new Uint8Array(res4.data));// 获取到卡的Array信息-转16进制(补0)---- 其他约定处理},fail(err4) {console.log(`mifareClassic.transceive fail 0x30: ${JSON.stringify(err4)}`)}})},fail(err3) {console.log(`mifareClassic.transceive fail 0x60: ${JSON.stringify(err3)}`)}})},fail(err) {console.log(`mifareClassic.connect fail: ${JSON.stringify(res)}`)}})))}
})

http://www.ppmy.cn/news/1184053.html

相关文章

精讲双向链表的销毁

相信大家各位学习双向链表的时候对链表的销毁,都或多或少有些小疑惑,我到底是传一级指针还是传二级指针 木关系,这些都是小意思,今天我将为大家share 一下关于到底如何进行正确传指针 对于链表是销毁其实就是对链表进行一个结点一…

【算法|动态规划 | 01背包问题No.1】AcWing 426. 开心的金明

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远控介绍及界面编写

红队专题 招募六边形战士队员[1]远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境:3.界面编程新建项目…

瀑布模型和敏捷开发

软件的生命周期自从应用程序的上线和发版之后服务于客户。程序员进入公司的项目组之后所接触到的系统项目有二次开发中和从零开始搭建的项目。项目有项目组的开发和验收周期。软件的设计模式遵循瀑布模型和敏捷开发。瀑布模型的软件设计模式在项目的一开始的搭建组成阶段需要招…

python随手小练10(南农作业题)

题目1: 编写程序,输出1~1000之间所有能被4整除,但是不能被5整除的数 具体操作: for i in range(1,1000): #循环遍历1~999,因为range是左闭右开if (i % 4 0) and (i % 5 ! 0) :print(i) 结果展示: 题目2&…

深度学习使用Keras进行多分类

之前的文章介绍了使用Keras解决二分类问题。那么对于多分类问题该怎么解决?本文介绍利用深度学习----Keras进行多分类。 1. 准备数据集 为了演示,本次选用了博文keras系列︱图像多分类训练与利用bottleneck features进行微调(三)中提到的数据集,原始的数据集将所有类别的…

【实用网站分享】

1、PyDebloatX https://pydebloatx.com/pydebloatx 是一种用于 Windows 操作系统的 Python 脚本,用于卸载 Windows 10 系统中的预装应用和系统组件,以便提高系统性能和释放磁盘空间。它是 Debloat Windows 10 脚本的一个分支,但具有更友好和…

免费活动-11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场

​​​​​​​ 活动介绍 过去的几年里,外界的风云变幻为我们的生活增添了一些不一样的色彩。在VUCA世界的浪潮里,每一个人都成为自己生活里的冒险家。面对每一次的变化,勇于探索未知,迎接挑战,努力追逐更好的自己。…