当前位置: 首页 > news >正文

Uniapp插件如何通过NFC读取多种证卡信息?

nfc读卡uniapp插件,由中软高科进行开发,主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新,目前性能已趋于稳定,并且读卡速度较之最初版本有了大的提升。

注意事项

测试使用的 appid 不可用于商用(否则后果自负)。
商用的 appid 请务必联系我司商务进行分配。

uniapp使用原生插件示例

1、加载插件

NFC身份证件读取——插件市场链接

// 获取 读证件的 插件
var readCardModule = uni.requireNativePlugin("CSHT-ReadCard");

2、参数设置

// 参数配置var config = {'openSound': true, // 蜂鸣器开关'openLog': true, // 日志保存开关'readType': 2, // 1: USB 2: NFC 3:串口读卡 5:Sam离线读卡 9:NFC电子护照  'appId': "123", // 'timeout': 20000, // 读卡超时时间 单位毫秒,最小值为 5000'openLocalCache': true, // 本地缓存开启'isNeedIdCardPhoto': false, // 解码身份证时,是否需要生成身份证正反面照片(不需要时不要开,以免影响速度)'isPassportPhoto': true, // 解码护照时,是否需要读取芯片里的高清人脸照(读取照片时间较长。可由外部OCR提取人脸照,速度快)'ipAndPort': [{ // 解码服务器地址,可配置多个服务器节点。第一个为主节点,其余为备用节点。'ip': 'yfs4.sfzydq.com','port': 9999}, {'ip': 'yjm2.sfzydq.com','port': 9999}]};// readType设置成 3,串口读卡时,必须设置 串口文件地址、波特率 两个参数。(不需要时,可删除)config.deviceFilePath = "/dev/ttyS0";config.baudrate = 115200;// readType设置成 9,读取护照时,必须添加 护照号、生日、有效期 三个参数。 (不需要时,可删除)config.documentNumberStr = "E90342672"; // 9位护照号码config.dateOfBirthStr = "940521"; // 出生日期,格式为 YYMMDDconfig.dateOfExpiryStr = "261113"; // 有效日期,格式为 YYMMDDreadCardModule.setReadCardConfig(config, (ret) => {var status = ret.status; var msg = ret.msg; // 状态信息this.$data.status = 'status: ' + status + '  msg: ' + msg;if(status){// 参数设置成功,初始化读卡this.readCardInit();}});

3、初始化读卡

   readCardInit() {readCardModule.readCardInit((ret) => {if(ret.type == "InitState"){ // 初始化状态信息回调var code = ret.code; // 状态码  参照文档状态码说明var msg = ret.msg; // 状态信息this.$data.status = 'code: ' + code + '  msg: ' + msg;this.$data.initSuccess = code == 1001;}});}

4、初始化成功后,即可开启读卡


// 跳转原生NFC界面,开始读卡
readCardModule.startReadCard((ret) => {switch (ret.type) {case "ReadCardState": // 读卡状态信息回调var code = ret.code; // 状态码  参照文档状态码说明var msg = ret.msg; // 状态信息this.$data.status = 'code: ' + code + '  msg: ' + msg;switch (code) {case 1023: // 读卡解码中case 1024: // 开始寻卡uni.showLoading({title: '读卡中...',mask: true});break;case 1000: // 读卡成功uni.hideLoading();break;case 1022: // 读卡失败uni.hideLoading();break;}break;case "ReadICCardSuccess": // 读其他卡成功this.$data.dataJson = 'cardType: ' + ret.cardType + '\ncardNumber: ' + ret.icNumber;this.$data.headImage = null;break;case "ReadIDCardSuccess": // 读身份证成功var data = ret.idCardData;this.$data.headImage = ret.base64Image;if (data.type == 1081||data.type == 1083) { // 外国人永居证this.$data.dataJson ='中文姓名: ' + data.nameChinese +'\n英文姓名: ' + data.nameEnglish +'\n性别: ' + data.sex +'\n生日: ' + data.birthday +'\n国籍: ' + data.nationlity +'\n证件号码: ' + data.id +'\n有效期限: ' + data.startDate + '-' + data.endDate;} else if (data.type == 1082) { // 港澳台居住证//this.$data.dataJson ='姓名: ' + data.name +'\n性别: ' + data.sex +'\n生日: ' + data.birthday +'\n住址: ' + data.address +'\n证件号码: ' + data.id +'\n签发机关: ' + data.issue +'\n有效期限: ' + data.startDate + '-' + data.endDate;} else {// 中国居民身份证this.$data.dataJson ='姓名: ' + data.name +'\n性别: ' + data.sex +'\n民族: ' + data.nation +'\n生日: ' + data.birthday +'\n住址: ' + data.address +'\n证件号码: ' + data.id +'\n签发机关: ' + data.issue +'\n有效期限: ' + data.startDate + '-' + data.endDate;}       break;case "ReadPassportSuccess": // 读护照成功this.$data.headImage = ret.base64Image;var data = ret.idCardData;this.$data.dataJson ='姓名: ' + data.nameOfHolder + '/' + data.primaryIdentifier + data.secondaryIdentifier +'\n性别: ' + data.gender +'\n生日: ' + data.dateOfBirth +'\n国家码: ' + data.nationality +'\n护照号码: ' + data.documentNumber +'\n有效期: ' + data.dateOfExpiry;break;default:break;}});

手动停止读卡

正常读卡时,不需要手动去停止,读卡结束后,会自动处理停止。

stopReadCard(){readCardModule.stopReadCard();
}

附录

身份证详细信息

字段类型注释
typeint1080:中国居民身份证 1082:港澳台居住证
addressstring家庭住址
birthdaystring出生日期
dnstringdn码
endDatestring身份证结束时间
startDatestring身份证生效时间
idstring身份证号码
issuestring签发机关
namestring姓名
nationstring民族
sexstring性别
uuidstringuuid
base64ImageStringbase64照片

外国人永久居住证

字段类型注释
typeint1081:外国人永久居住证
birthdaystring出生日期
dnstringdn码
endDatestring身份证结束时间
startDatestring身份证生效时间
idstring身份证号码
issuestring签发机关
sexstring性别
uuidstringuuid
base64Imagestringbase64照片
nameChinesestring中文姓名
nameEnglishstring英文姓名
nameEnglishAddstring英文附加姓名
nationlitystring国籍
cardVersionstring卡版本号
cardTypestring卡类型
historicalNumberstring历史号码
renewalNumberstring续签数

电子护照详细信息

字段类型注释
nameOfHolderstring中文姓名
primaryIdentifierstring
secondaryIdentifierstring
genderstring性别 M男 F女
dateOfBirthstring生日
nationalitystring国家码
dateOfExpirystring有效期
documentNumberstring护照号码
durationlong解码时长
base64ImageStringbase64照片

状态码对应表

    READCARD_SUCCESS(1000, "解码成功"),ININ_OK(1001, "初始化成功"),ININ_FAILE(1002, "初始化失败"),USB_NODEVICE_CODE(1003, "未发现读卡设备,请检查usb连接"),USB_NOREADCARD_CODE(1004, "没有检测到读卡设备"),USB_SYSYTEMREEOE_CODE(1005, "系统usb异常,请检查usb连接"),USB_NOINTERFACE_CODE(1006, "usb没有建立连接"),USB_NOCHANNLE_CODE(1007, "usb通道打开失败"),USB_NOSERVICE_CODE(1008, "没有usb服务"),SOCKET_SYS_CODE(1010, "网络通讯异常"),LOCAL_DATA_ERROR(1018, "本地通信失败"),UNKONW_ERROR(1020, "未知异常"),READCARD_START(1021, "解码开始"),READCARD_FAILE(1022, "解码失败"),READCARD_READING(1023, "解码中"),FIND_CARD_START(1024, "开始寻卡"),FIND_CARD_FAIL(1025, "寻卡失败"),FIND_CARD_SUCCESS(1026, "寻卡成功"),READ_UID_FAILE(1031, "UID异常"),SERIALPORT_NOINTERFACE_CODE(1036, "串口异常,请检查设备"),SERIALPORT_DATA_ERROR(1038, "串口异常"),

卡类型

    CARD_IC(1040, "IC卡"),CARD_M1(1041, "M1卡"),CARD_LCT_STUDENT(1051, "绿城通学生卡"),CARD_LCT_NORMAL(1052, "绿城通普通卡"),CARD_LCT_OLD(1053, "绿城通老年卡"),CARD_SB(1060, "社保卡"),CARD_CMCC_SIM(1070, "中国移动超级SIM卡"),CARD_CUCC_SIM(1071, "中国联通超级SIM卡"),CARD_CTCC_SIM(1072, "中国电信超级SIM卡"),CARD_IDCARD(1080, "中国居民身份证"),CARD_IDCARD_FOREIGN(1081, "外国永久居住证"),CARD_IDCARD_GAT(1082, "港澳台居住证")

相关文章:

Uniapp插件如何通过NFC读取多种证卡信息?

nfc读卡uniapp插件,由中软高科进行开发,主要是通过NFC读取居民身份证、港澳台居住证、外国人居住证、护照等证卡的信息。经过多个版本的升级更新,目前性能已趋于稳定,并且读卡速度较之最初版本有了大的提升。 注意事项 测试使用的…...

米哈游C++开发精选60道面试题及参考答案

C++ 面向对象的三个特征 封装是把数据和操作数据的函数捆绑在一起,并且对数据的访问进行限制。这样做的好处是可以隐藏对象的内部实现细节,只暴露必要的接口给外部。例如,在一个银行账户类中,账户余额这个数据成员是被封装起来的,外部不能直接访问和修改,而是通过存款、取…...

深度与视差的关系及其转换

深度与视差的关系及其转换 在计算机视觉和立体视觉中,深度和视差是两个重要的概念。理解这两者之间的关系对于实现立体图像处理、三维重建以及深度估计至关重要。在这篇博客中,我们将深入探讨深度和视差的概念,并介绍它们之间的转换关系。 …...

安全见闻全解析

跟随 泷羽sec团队学习 声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及…...

搭建Tomcat(四)---Servlet容器

目录 引入 Servlet容器 一、优化MyTomcat ①先将MyTomcat的main函数搬过来: ②将getClass()函数搬过来 ③创建容器 ④连接ServletConfigMapping和MyTomcat 连接: ⑤完整的ServletConfigMapping和MyTomcat方法: a.ServletConfigMappin…...

PT2044A 单触控单输出IC

1 产品概述 ● PT2044A 是一款单通道触摸检测芯片。该芯片内建稳压电路,提供稳定电压给触摸感应电路使用。同时内部集成高效完善的触摸检测算法,使得芯片具有稳定的触摸检测效果。该芯片专为取代传统按键而设计,具有宽工作电压与低功耗的特性…...

docker安装mysql5.7

1、宿主机创建映射目录 mkdir -p /data/mysql/log mkdir -p /data/mysql/data mkdir -p /data/mysql/conf这里我放在了/data/mysql目录下 2、拉取mysql镜像 docker pull mysql:5.7注意是5.7版本,如果是8版本操作会略有不同,下篇文章介绍安装8版本的操…...

安卓 文件管理相关功能记录

文件管理细分为图片、视频、音乐、文件四类 目录 权限 静态声明权限 动态检查和声明权限方法 如何开始上述动态申请的流程 提示 图片 获取图片文件的对象列表 展示 删除 视频 获取视频文件的对象列表 获取视频file列表 按日期装载视频文件列表 展示 播放 删除…...

GB28181系列三:GB28181流媒体服务器ZLMediaKit

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、ZLMediaKit介绍 二、 ZLMediaKit安装、运行(Ubuntu) 1、安装 2、运行 3、配置 三、ZLMediaKit使用 一、ZLMediaKit介绍 ZLMediaKit是一个基于C11的高性能运营级流媒体服务框架,项目地址&#xf…...

ScottPlot学习的常用笔记

ScottPlot学习的常用笔记 写在前面版本的选择第一个障碍:版本问题。 ScottPlot4.0的官方网站与示例官方起始页cookbook5.0Demo4.1 demo以4.1为例,解压和运行如下: 下载源代码和编译先说结论: 写在前面 之前调研的TraceCompass&am…...

二、mapbox-gl实现白膜立体建筑

有时候我们只有二维的面数据,怎么实现类似高德地图中的白膜立体建筑呢?在mapbox-gl中很容易实现,具体如下。 要在Vue中结合Mapbox显示自定义的GeoJSON数据,并实现建筑物的白膜效果,我们需要执行以下步骤: …...

mybatisplus 分库查询

mybatisplus 分库查询 比如我们的项目有两个数据库 不同的表在不同的库 我们是可以使用mybatisplus来实现 首选引入pom <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><vers…...

计算属性 (vue3)

二 实例 1route.query.type...

RabbitMQ 安装、配置和使用介绍 使用前端js直接调用方式

1. 安装 RabbitMQ 1.1 安装 Erlang RabbitMQ 是基于 Erlang 语言开发的&#xff0c;因此首先需要安装 Erlang。 在 Ubuntu 上安装 Erlang&#xff1a; bash sudo apt-get update sudo apt-get install erlang 在 CentOS 上安装 Erlang&#xff1a; bash sudo yum insta…...

电脑显示器选购指南2024

选择显示器是五花八门的显示参数&#xff0c;如何选择&#xff0c;以下给出参数说明&#xff0c;及部分参考&#xff1a; 1. 尺寸和分辨率 尺寸&#xff08;英寸&#xff09; 根据使用距离和用途选择合适的屏幕尺寸&#xff1a; 21-24 英寸&#xff1a;适合小桌面空间、日常…...

vue2中如何实现自定义指令

实现自动聚焦功能 1.不用自定义指令 使用生命周期钩子mounted 2.使用自定义指令 1. 使用全局组件 首先在main.js中注册 然后在组件中直接使用v-指令名 2. 使用局部注册 局部注册和全局注册类似 如果很多组件需要自定义&#xff0c;建议使用自定义指令注册在全局...

QT从入门到精通(一)——Qlabel介绍与使用

1. QT介绍——代码测试 Qt 是一个跨平台的应用程序开发框架&#xff0c;广泛用于开发图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;也支持非图形应用程序的开发。Qt 提供了一套工具和库&#xff0c;使得开发者能够高效地构建高性能、可移植的应用程序。以下是…...

【jpa】springboot使用jpa示例

目录 1. 请求示例2. pom依赖3. application.yaml4.controller5. service6. repository7. 实体8. 启动类 1. 请求示例 curl --location --request POST http://127.0.0.1:8080/user \ --header User-Agent: Apifox/1.0.0 (https://apifox.com) \ --header Content-Type: applic…...

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建&#xff0c;执行如下指令&#xff1a; pip install flask# 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run()核心代码剖析&#xff1a; 从flask包导…...

ansible自动化运维(五)roles角色管理

目录 Roles角色管理 创建nginx的角色目录 定义任务配置文件&#xff1a; 定义jinjia2模板&#xff1a; 定义nginx yml文件 检查语法&#xff0c;执行命令 检验结果&#xff1a; Roles角色管理 角色&#xff08;roles&#xff09;是ansible自1.2版本开始引入的新特性&…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

LangFlow技术架构分析

&#x1f527; LangFlow 的可视化技术栈 前端节点编辑器 底层框架&#xff1a;基于 &#xff08;一个现代化的 React 节点绘图库&#xff09; 功能&#xff1a; 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

【Kafka】Kafka从入门到实战:构建高吞吐量分布式消息系统

Kafka从入门到实战:构建高吞吐量分布式消息系统 一、Kafka概述 Apache Kafka是一个分布式流处理平台,最初由LinkedIn开发,后成为Apache顶级项目。它被设计用于高吞吐量、低延迟的消息处理,能够处理来自多个生产者的海量数据,并将这些数据实时传递给消费者。 Kafka核心特…...