前言,最近学习调用 医保卡业务,使用德卡读卡器,主要就是调用一个DLL,动态库文件.
借着自学的机会把心得体会都记录下来,方便感兴趣的小伙伴学习与讨论。
内容均系原创,欢迎大家转载分享,但转载的同时别忘了注明作者和原文链接哦。本文内容和图片如果有侵犯您的权利,请联系yisheng163@qq.com。

  一,准备工作:

先到德卡官网下载相关资料,下载动态库。
http://www.decard.com/download/downloadcategoryid=10&isMode=false.html
下载 SSCardDriver.dll 动态库。

读卡器准备:找到一台德卡Z9读卡器用来测试,Z9与Z90基本通用,不影响测试。

先拆开底座,把授权蕊片装入卡槽二。

USB插头,插入电脑USB口,任意插USB,不需要记住USB端口号,下一步读卡也不需要设置USB端口号。

 

二,C#读卡类

/// <summary>
    /// 德卡读卡器专用类
    /// mail:yisheng163@qq.com
    /// </summary>
    public class SSCard
    {
        /// <summary>
        /// 德卡读卡器专用读卡方法,需要将SSCardDriver.dll放在程序同一目录下
        /// </summary>
        /// <param name="iType">卡的类型,定义如下:1-接触式操作卡;2-非接触式操作卡;3-自动寻卡,接触式操作卡优先;4-自动寻卡,非接触式操作卡优先。</param>
        /// <param name="outInfo">该输出参数为读出的社保卡基本信息各数据项,依次为:发卡地区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各数据项之间以“|”分割,且最后一个数据项以“|”结尾。</param>
        /// <returns></returns>
        [DllImport("SSCardDriver.dll", EntryPoint = "iReadCardBas")]
        public static extern int iReadCardBas(int iType, StringBuilder outInfo);

        /// <summary>
        /// 读取社会保障号和姓名
        /// </summary>
        /// <returns></returns>
        public static string GetIDCode(ref bool CodeState, ref string ErrDesc, ref string IName, ref string ICard)
        {
            string ReStr="";

            StringBuilder myStrB=new StringBuilder(256);
            iReadCardBas(1, myStrB);
            if (myStrB != null && myStrB.ToString() != "" && myStrB.ToString().IndexOf("|") >= 0)
            {
                //读取成功
                string[] myStringList = myStrB.ToString().Split('|');
                if (myStringList != null && myStringList.Length > 0)
                {
                    ICard = myStringList[1];
                    IName = myStringList[4];
                    CodeState = true;
                    ErrDesc = "";                    
                }
                else
                {
                    CodeState = false;
                    ErrDesc = myStrB.ToString();
                    return "";
                }
            }
            else
            {
                    CodeState = false;
                    ErrDesc = myStrB.ToString();
                    return "";
            }

            return ReStr;
        }

    }

 

 

三,调用测试。

StringBuilder myStrB = new StringBuilder(2048);
            PT.BLL.DLL.SSCard.iReadCardBas(1, myStrB);
            if (myStrB != null && myStrB.ToString() != "" && myStrB.ToString().IndexOf("|") >= 0)
            {
                textBox1.Text = "\r\n" + myStrB.ToString();
            }

 

读卡成功。

 

 

四,示例源码:

 德卡Z90读卡器CSharp示例程序.rar

德卡Z90读卡器CSharp示例程序源码.rar

 

posted on 2018-05-07 09:47  yi-sheng  阅读(7870)  评论(1编辑  收藏  举报