更新记录
1.0.1(2021-11-16)
华视电子 CVR-100B蓝牙二三代证读卡器
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 11.0 | armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
前言
华视电子 CVR-100B蓝牙二三代证读卡器 阅读器,蓝牙扫描
功能
- 识别身份证信息,支持居民身份证、港澳台居住证、外国人永居证
- 支持身份证图片保存到本地,或转成base64
wrs-cvr组件
先在Android设置蓝牙里面连接读卡器蓝牙,然后再根据业务调用下面接口
var wrscvr = uni.requireNativePlugin("wrs-cvr");
方法
- 初始化数据,放到onLoad函数里调用即可
wrscvr.initData();
- 扫描设备
wrscvr.scan((resp) => {
this.devices = [];
this.devices.push(...resp.bind);
this.devices.push(...resp.notBind);
});
- 连接设备
var params = {};
params.address = this.connectAddress;
var result = wrscvr.connect(params);
if(isString(result)) {
result = JSON.parse(result);
}
if(result.ret == 0) {
console.log("连接成功");
this.showMsg("连接成功");
} else {
this.showMsg("连接失败");
}
- 读取身份证
var docPath = plus.io.convertLocalFileSystemURL("_doc");
var saveImageFilePath = docPath + "/head.png";
var params = {};
// params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
// params.needBase64Image = ""; // 图片是否base64转码
params.saveImageFilePath = saveImageFilePath;
var result = wrscvr.read(params);
if(isString(result)) {
result = JSON.parse(result);
}
var jsonStr = JSON.stringify(result);
this.img = saveImageFilePath;
console.log("读卡信息:" + jsonStr);
this.showMsg("读卡信息:" + jsonStr);
- 对比指纹
var params = {};
// params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
// params.needBase64Image = ""; // 图片是否base64转码
var result = wrscvr.matchFP(params);
if(isString(result)) {
result = JSON.parse(result);
}
var jsonStr = JSON.stringify(result);
console.log("读卡信息:" + jsonStr);
- 休眠
wrscvr.sleep();
- 唤醒
wrscvr.weak();
- 断开
wrscvr.close();
完整demo:
<template>
<div>
<text>IDRDemo</text>
<button @click="scan()">扫描</button>
<button @click="connect()">连接</button>
<button @click="read()">读卡</button>
<button @click="marchFP()">对比指纹</button>
<button @click="sleep()">休眠</button>
<button @click="weak()">唤醒</button>
<button @click="disConnect()">断开</button>
<uni-list>
<uni-list-item v-for="(item, index) in devices" :title="item.name" clickable @click="onClick(index)"
:show-badge="connectAddress == item.address" badge-positon="left" badge-text="√"></uni-list-item>
</uni-list>
<image style="width: 100px; height: 100px; background-color: #eeeeee;" :src="img"
></image>
{{msg}}
</div>
</template>
<script>
import {isString, isObject, isType} from '@/utils/is_type.js'
var wrscvr = uni.requireNativePlugin("wrs-cvr");
export default {
data() {
return {
devices: [],
connectAddress: null,
msg:"",
img:""
}
},
onLoad() {
wrscvr.initData();
},
methods: {
scan: function(){
wrscvr.scan((resp) => {
this.devices = [];
this.devices.push(...resp.bind);
this.devices.push(...resp.notBind);
});
},
connect: function() {
var params = {};
params.address = this.connectAddress;
var result = wrscvr.connect(params);
if(isString(result)) {
result = JSON.parse(result);
}
if(result.ret == 0) {
console.log("连接成功");
this.showMsg("连接成功");
} else {
this.showMsg("连接失败");
}
},
read: function() {
var docPath = plus.io.convertLocalFileSystemURL("_doc");
var saveImageFilePath = docPath + "/head.png";
var params = {};
// params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
// params.needBase64Image = ""; // 图片是否base64转码
params.saveImageFilePath = saveImageFilePath;
var result = wrscvr.read(params);
if(isString(result)) {
result = JSON.parse(result);
}
// certType:身份证类型:“ ”:普通身份证 “J”:港澳台身份证 “I”:外国人永久居留证
var jsonStr = JSON.stringify(result);
this.img = saveImageFilePath;
console.log("读卡信息:" + jsonStr);
this.showMsg("读卡信息:" + jsonStr);
},
marchFP:function(){
var params = {};
// params.saveImageFilePath = "/file/ss/logo.png"; // 是否保存为本地文件
// params.needBase64Image = ""; // 图片是否base64转码
var result = wrscvr.matchFP(params);
if(isString(result)) {
result = JSON.parse(result);
}
var jsonStr = JSON.stringify(result);
console.log("读卡信息:" + jsonStr);
},
sleep:function(){
wrscvr.sleep();
},
weak:function(){
wrscvr.weak();
},
disConnect: function() {
wrscvr.close();
},
onClick: function(index) {
this.connectAddress = this.devices[index].address;
},
showMsg:function(m){
this.msg = this.msg + "\n" + m;
}
}
}
</script>
<style>
</style>