麒麟OS国产系统身份证阅读器web网页开发使用操作流程

news2024/11/14 16:55:09

1、打开麒麟软件商店,选择驱动,找到身份证阅读器,找到东信智能身份证社保卡读卡器,点击安装。

2、安装完成后,点击打开

3、进入读卡界面

 4、进入代码集成

<script type="text/javascript">
    var ctnFingerPrint = false;
    /***
     * 发送:
     *  _act : string
     *  _tflag: int
     *  else:  string
     *
     * 接收:
     *  _act : string
     *  _tflag:int
     *  code:  int     - 错误码
     *  info:  string  - 错误信息
     *  retData: 返回的数据JSON
     *      {_more : 1 - int 表示还有多的数据,js不会清理掉callback}
     */
    function callback(rjson){
            if((rjson.functionName == "readIDCard" || rjson.functionName == "readIDCardEX") && rjson.photoBase64!=null){
                $("#imgIdCard").attr("src", "data:image/jpeg;base64,"+rjson.photoBase64);
                rjson.photoBase64 = rjson.photoBase64.substring(1, 10) + "... 这里是Base64编码的身份证图片";
            }
            if(rjson.functionName == "collectFingerPrint"){
                if(rjson.fingerPrintBase64 != null) {
                    $("#imgIdCard").attr("src", "data:image/jpeg;base64," + rjson.fingerPrintBase64);
                    rjson.fingerPrintBase64 = rjson.fingerPrintBase64.substring(1, 10) + "... Base64指纹图像";
                }
                if((rjson.fpQuality==null || rjson.fpQuality<80)){
                    setTimeout(function(){
                        if(!ctnFingerPrint) return;
                        $("#btnFingerPrint").click();
                    }, 300)
                }
            }
        showMsg("<span style='color:#CB602D;'>接收:"+JSON.stringify(rjson)+"</span>");
    }
    function showMsg(msg){
        $("#msg").append(msg).append("<br>");
        $("#msg").scrollTop($("#msg").height()+300);
    }
    $(document.body).ready(function(){
        $(".divTab").find("div").each(function(i){
            $(this).attr("idx", i);
        }).click(function(){
            var idx = $(this).attr("idx");
            $(".divTab").find("div").removeClass("tabSelect");
            $(this).addClass("tabSelect");
            $(".divContent").children("div").hide();
            $(".divContent").children("div").eq(1*idx).show();
        }).eq(0).click();

        var html = "";
        for(var i=0; i<=27; i++) {
            var text = i<10 ?"0"+i:i;
            html += "<option value='"+text+"'>"+text+"</option>";
        }
        $("#addr15693").html(html);
        html = "";
        for(var i=0; i<=63; i++) {
            var text = i<10 ?"0"+i:i;
            html += "<option value='"+text+"'>"+text+"</option>";
        }
        $("#addrm1").html(html);
        html = "";
        var atext = "请插卡,请刷卡,读卡错误,请输入密码,密码错误,操作成功,操作超时,操作失败,请取回卡,请重新输入密码,请再次输入密码,请输入新密码,请确认新密码".split(",");
        for(var i=0; i<atext.length; i++) {
            var text = atext[i];
            html += "<option value='"+text+"'>"+text+"</option>";
        }
        $("#voice").html(html);

        $("button").click(function(obj){
            obj = $(obj.target);
            console.log(obj.text());
            var act = obj.attr("act");
            var param = obj.attr("param");
            var ref = obj.attr("ref");
            if(act==null){
                return showMsg("没有指定 act属性");
            }
            if(act=="") return;
            var data = {};
            if(param!=null){
                data = eval("data="+param);
            }
            data._act = act;
            if(ref!=null){//有引用
                var fs = obj.parent();
                while(!fs.parent().hasClass("divContent")) fs = fs.parent();
                ref = ref.replace(/\s+/g, "");
                ref = ref.split(",");
                for(var i=0; i<ref.length; i++){
                    if(ref[i]=='')continue;
                    data[ref[i]] = ""+ getValue(fs, ref[i]);
                }
            }
            CARDREADER.send(data, callback);
        });
    });
    function getValue(fs, act){
        var obj = null;
        if((obj=fs.find("input[act='"+act+"']")).length>0){//input
            if(obj.attr("type")=="text") return obj.val();
            if(obj.attr("type")=="checkbox") return obj.prop('checked')?1:0;
            //认为是radio
            var ret = null;
            obj.each(function(){
                if($(this).prop("checked")) {
                    ret = $(this).val();
                    if(ret==null)
                        alert($(this).toString() +"没有value");
                }
            });
            if(ret != null)
                return ret;
        }
        if((obj=fs.find("select[act='"+act+"']")).length>0){//select
            return obj.val();
        }
        return "未成功解析的ref";
    }
    function setI44(obj){
        if(obj.value=="4428"){
            $("#i44len").val("1024");
            $("#i44key").val("FFFF");
        }
        else{
            $("#i44len").val("256");
            $("#i44key").val("FFFFFF");
        }
    }
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A股自动交易,自动止盈止损,自动打板

一、前言 炒股的都知道&#xff0c;股市里最难克服的就是人性。开发这个项目的初衷即是想通过机器来克服人性的弱点。因为只要把策略定好&#xff0c;机器会无条件挂单。该止损止损&#xff0c;该止盈止盈。 短线的话卖比买更重要&#xff1a;复盘就会发现&#xff0c;大的亏…

算法通关村第十关——快速排序算法

1 快速排序基本过程 快速排序的是将分治法运用到排序问题的典型例子。力扣912题&#xff0c;给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 基本思想&#xff1a;是通过随机标记一个pivot元素将含有n个元素的序列划分为左右两个子序列left和right&#xff0c;其中…

验证码服务(使用提供好的项目)

1、先生成一个指定位数的验证码&#xff0c;根据需要可能是数字、数字字母组合或文字。 2、根据生成的验证码生成一个图片并返回给页面 3、给生成的验证码分配一个key&#xff0c;将key和验证码一同存入缓存。这个key和图片一同返回给页面。 4、用户输入验证码&#xff0c;连…

什么是 DALI 协议?

在照明行业&#xff0c;我们常常听到 DALI 的名号&#xff01;那么&#xff0c;到底什么是 DALI 呢&#xff1f;那么今天&#xff0c;我们就来一起入门&#xff0c;揭开 DALI 的神秘面纱~什么是 DALI 协议&#xff1f; DALI &#xff0c;实际上是一个简称&#xff01;它的全程如…

向阳而生的智慧光伏设施

光伏发电太阳花装配双轴自动追踪器&#xff0c;会根据当前的经纬度和时间&#xff0c;实时计算太阳的方位角和高度角&#xff0c;计算出光伏板应当运行的角度&#xff0c;于倾角传感器的当前角度 比较&#xff0c;当二者的误差超过 1时&#xff0c;发出电机运转指令&#xff0c…

程序填空技巧1.0

程序填空要先知道这个程序要干什么&#xff0c;然后找到标准模板后对照模板填写&#xff0c;但当然不是让你做题的时候对照模板写&#xff0c;而是要把每种算法的标准模板背下来&#xff0c;但你肯定要问&#xff1a;邹邹&#xff0c;我哪里来的模板呢&#xff1f;&#xff1f;…

租赁小程序开发|免押租赁系统包含哪些功能?

租赁小程序是一种基于现代技术的创新解决方案&#xff0c;为租赁业务提供了全面的管理功能。通过这个小程序&#xff0c;您可以方便地组织和跟踪您的库存情况&#xff0c;轻松管理租赁合同以及处理订单。这一切都在您的指尖之间&#xff0c;让您节省时间和精力&#xff0c;专注…

PHP敬老院管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页

一、源码特点 PHP 敬老院管理系统&#xff08;养老&#xff09;是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 论文 https://download.csdn.net/download/qq_41221322/…

【OCR识别】tess4j图片识别文字

什么是OCR? OCR &#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是指电子设备&#xff08;例如扫描仪或数码相机&#xff09;检查纸上打印的字符&#xff0c;通过检测暗、亮的模式确定其形状&#xff0c;然后用字符识别方法将形状翻译成计算机…

探秘工业设计的魅力:引领时尚潮流,打造个性空间

工业风格源自于上世纪初的工人阶级世界&#xff0c;几十年来一直充满诱惑力。它们由金属集合物&#xff0c;焊接、铆钉这些暴露在外的结构组建&#xff0c;融进了更多装饰性的曲线&#xff0c;再与素雅的色彩搭配形成&#xff1a;让我们来看看这种历史悠久的&#xff0c;在室内…

创作2周年纪念日-特别篇

创作2周年纪念日-特别篇 1. 与CSDN的机缘2. 收获3. 憧憬 1. 与CSDN的机缘 很荣幸&#xff0c;在大学时候&#xff0c;能够接触到CSDN这样一个平台&#xff0c;当时对嵌入式开发、编程、计算机视觉等内容比较感兴趣。后面一个很偶然的联培实习机会&#xff0c;让我接触到了Pych…

06:TIM定时器功能------编码器接口功能

目录 1:简历 2: 正交编码器 3:编码器接口基本结构 4:编码器的工作模式 5:极性反转 A:编码器接口测速 1:连接图 2:函数介绍 3:步骤 4:代码 B:编码器接口计次 1:连接图 2:代码 1:简历 Encoder Interface 编码器接口 编码器接口可接收增量&#xff08;正交&#xff09;编…

无涯教程-分类算法 - 简介

分类可以定义为根据观测值或给定数据点预测类别的过程。分类的输出可以采用"黑色"或"白色"或"垃圾邮件"或"非垃圾邮件"的形式。 在数学上&#xff0c;分类是从输入变量(X)到输出变量(Y)近似映射函数(f)的任务&#xff0c;它属于有监督…

Bito----一款Idea智能化代码辅助插件,让你的开发效率飞起来!

ChatGPT&#xff0c;想必大家都比较熟悉了&#xff0c;一款高情商对话AI&#xff0c;可以用来进行文本对话、问答等多种人机交互场景&#xff0c;也可以用来辅助编写代码&#xff0c;大大提高程序员的开发效率。而今天的主角Bito&#xff0c;是一款比ChatGPT更快&#xff0c;无…

error LNK2019: 无法解析的外部符号 __imp__glClear@4,函数 _main 中引用了该符号

自己犯这个错误有些搞笑了&#xff0c;找着教程一步一步来还出错&#xff0c;复制GLFW示例代码 运行&#xff0c;报的第一个错误&#xff0c;这是一个链接错误&#xff0c;解决方案&#xff1a;

Unity Meta Quest MR 开发教程:(二)自定义透视 Passthrough【透视功能进阶】

文章目录 &#x1f4d5;教程说明&#x1f4d5;动态开启和关闭透视⭐方法一&#xff1a;OVRManager.instance.isInsightPassthroughEnabled⭐方法二&#xff1a;OVRPassthroughLayer 脚本中的 hidden 变量 &#x1f4d5;透视风格 Passthrough Styling⭐Inspector 面板控制⭐代码…

JVM7:垃圾回收是什么?从运行时数据区看垃圾回收到底回收哪块区域?垃圾回收如何去回收?垃圾回收策略,引用计数算法及循环引用问题,可达性分析算法

垃圾回收是什么&#xff1f;从运行时数据区看垃圾回收到底回收哪块区域&#xff1f; 垃圾回收如何去回收&#xff1f; 垃圾回收策略 引用计数算法及循环引用问题 可达性分析算法 垃圾回收是什么&#xff1f;从运行时数据区看垃圾回收到底回收哪块区域&#xff1f;垃圾回收如何去…

使用Linux部署Kafka教程

目录 一、部署Zookeeper 1 拉取Zookeeper镜像 2 运行Zookeeper 二、部署Kafka 1 拉取Kafka镜像 2 运行Kafka 三、验证是否部署成功 1 进入到kafka容器中 2 创建topic 生产者 3 生产者发送消息 4 消费者消费消息 四、搭建kafka管理平台 五、SpringBoot整合Kafka 1…

求生之路2私人服务器开服搭建教程centos

求生之路2私人服务器开服搭建教程centos 大家好我是艾西&#xff0c;朋友想玩求生之路2(left4dead2)重回经典。Steam玩起来有时候没有那么得劲&#xff0c;于是问我有没有可能自己搭建一个玩玩。今天跟大家分享的就是求生之路2的自己用服务器搭建的一个心路历程。 &#xff0…

【LeetCode-面试经典150题-day15】

目录 104.二叉树的最大深度 100.相同的树 226.翻转二叉树 101.对称二叉树 105.从前序与中序遍历序列构造二叉树 106.从中序与后序遍历序列构造二叉树 117.填充每个节点的下一个右侧节点指针Ⅱ 104.二叉树的最大深度 题意&#xff1a; 给定一个二叉树 root &#xff0c;返回其…