zoukankan      html  css  js  c++  java
  • Asp.net和第二代身份证读卡器互联

    大家都知道,Asp.net是在服务器端执行的程序,无法直接与客户端的设备进行通信,但是客户提出了能否直接在网页上调用二代身份证读卡器。

     

    一、解决思路

        经过我们的分析,理论上是完全可行的。下面描述一下这个问题的解决思路。

        1.编写一个AcitiveX控件,通过该控件就可以连接到身份证读卡器,并且读取卡上面的内容。

        2.利用javascript调用Activex的方法,将身份证上面的信息读取出来,并且填充到页面上的文本输入框。

        3.利用javascript将身份证照片文件也上传到服务器上

     

     二、开发环境

        1.我们采用的是国腾二代身份证读卡器,其他的读卡器也类似,都提供了SDK义工调用

        2.采用VS2005作为开发工具

     

    三、详细步骤 

          1、开发读取身份证读卡器的ActiveX控件:由于我本身对于C++不是特别熟,所以开发的ActiveX控件采用了熟悉的C#语言,采用C#语言的缺点是客户端必须要安装.net framework2.0 

          该控件的实现就是调用读卡器的SDK,读取身份证上面的文本信息(如身份证号/性别/出生日期/发证机关/身份证地址等),同时还可以读取照片信息。由于我们所采用的设备直接将这些信息生出到c盘根目录,所以我用程序直接读取这些文件来实现。

           有关如何利用C#开发ActiveX控件,请参考这下面的文章:

           http://www.cnblogs.com/homer/archive/2005/01/04/86473.html

           2、如何编写JavaScript代码

          在JavaScript中,如何初始化ActiveX控件并且调用ActiveX控件的方法。

          a.初始化控件调用

    var   hello;
    try{
        hello = new ActiveXObject("Train.Reg.Demo");
    }catch(err){
        alert('您可能没有正确的安装身份证读卡器组件,或者浏览器设置不正确!
    
    错误信息为:' + err.description + '
    
    有关设置的详细信息请参考帮助!');
    }
    
         b.调用控件的方法
       var h = hello.TestCall();
            if(h==null) return false;
            
            var vIdCardNo = document.getElementById('<%=txtIdCardNo.ClientID %>');
            vIdCardNo.value = h.IdCardNo;
            
            var vName = document.getElementById('<%=txtFullName.ClientID %>');
            vName.value = h.Name;
    
            var aAddress = document.getElementById('<%=txtAddress.ClientID %>');
            aAddress.value = h.Address;
    
            var vSex = document.getElementById('<%=ddlSex.ClientID %>');
            vSex.value = h.Sex;
    

     c.利用VS2005中的fileUpload组件,上传图片的方法
     var vUploadPath = document.getElementById('<%=FileUpload1.ClientID %>');
            vUploadPath.focus();
            var   WshShell;
            try{
                WshShell = new   ActiveXObject("WScript.Shell");
            } catch(err){
                alert('无法读取照片信息:浏览器设置不正确!
    
    错误信息为:' + err.description + '
    
    您需要将浏览器设置为 对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本 设置为启用
    
    或者参考帮助!');
            }
            WshShell.SendKeys(h.PhotoPath);
            WshShell.SendKeys("{TAB}");
            //vUploadPath.src = h.PhotoPath;
            setTimeout(function(){__doPostBack('ctl00$ContentPlaceHolder1$lbUpload','');},0);
    


    更多技术交流+QQ:318617848
  • 相关阅读:
    关于解决win10安装mongodb启动服务失败的解决办法
    python3 Debug报错 Traceback (most recent call last)
    centos7 iptable开放端口失败的总结
    操作系统
    大数据医疗
    软件相关
    射频消融仪产品相关
    YY/T 0664—2020《医疗器械软件 软件生存周期过程》 相关
    ISO19001相关
    GMP现场指导相关
  • 原文地址:https://www.cnblogs.com/huyaguang/p/5859367.html
Copyright © 2011-2022 走看看