前言,最近学习调用 医保卡业务,使用德卡读卡器,主要就是调用一个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();
iReadCardBas(, myStrB);
if (myStrB != null && myStrB.ToString() != "" && myStrB.ToString().IndexOf("|") >= )
{
//读取成功
string[] myStringList = myStrB.ToString().Split('|');
if (myStringList != null && myStringList.Length > )
{
ICard = myStringList[];
IName = myStringList[];
CodeState = true;
ErrDesc = "";
}
else
{
CodeState = false;
ErrDesc = myStrB.ToString();
return "";
}
}
else
{
CodeState = false;
ErrDesc = myStrB.ToString();
return "";
} return ReStr;
} }

三,调用测试。

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

读卡成功。

四,示例源码:

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

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

德卡Z90读卡器读取社保卡,德卡Z90读卡器CSharp示例程序源码的更多相关文章

  1. ArcGIS紧凑型切片读取与应用3-紧凑型批量转分散型(附源码)

    1.前言 上篇介绍了webgis动态加载解析紧凑型切片的例子,现在我们使用逆向思维实现紧凑型切片转分散型切片,在实际工作中很有用处,紧凑型切片易于拷贝,但读取只有部署到Arcgis Server才行. ...

  2. ArcGIS紧凑型切片读取与应用2-webgis动态加载紧凑型切片(附源码)

    1.前言 上篇主要讲了一下紧凑型切片的的解析逻辑,这一篇主要讲一下使用openlayers动态加载紧凑型切片的web地图服务. 2.代码实现 上篇已经可以通过切片的x.y.z得对应的切片图片,现在使用 ...

  3. [spring源码学习]三、IOC源码——自定义配置文件读取

    一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方 ...

  4. ArcGIS紧凑型切片读取与应用1-解析(附源码)

    1.前言 ArcGIS 发布的切片服务分为紧凑型切片和传统的分散型切片以及最新ArcGIS por新增的矢量切片.传统的分散型切片面临的问题是文件个数太多,部署拷贝过程十分的耗时,紧凑型切片是对分散型 ...

  5. OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)

    在上一篇OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构中,我们大致了解了Java字节码文件的结构. 本篇详细地介绍了如何读取.class文件的大部分细节. 1.构造文件  ...

  6. Android读取RAM,ROM,SD卡容量

    1)简介 一般人们在买手机的时候,在手机配置上都会出现"内存容量:512MB ROM+512MB RAM "等等类似这样的说明,可能很多人都知道RAM的意思就是运存的意思,但是对于 ...

  7. 017 Android 获取手机SIM卡序列号和读取联系人

    1.获取手机SIM卡序列号 //5.存储sim卡系列号 //5.1获取sim卡系列号 TelephonyManager manager = (TelephonyManager) getSystemSe ...

  8. 【双模卡的相关知识】解SIM卡前需要知道的信息(SIM年分和厂商识别)

    <ignore_js_op> 二.SIM版本问题SIM卡的版本有两种说法,一是有些是制造厂制定的,二是电信公司的制定.下面以移动为例,目前我们手里的SIM有几种版本:v0.v1.v2.v3 ...

  9. 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别

    1.条码卡:该卡卡面上有一串条码,通过扫描枪或者相应的条码读卡器读出该条码卡的卡号.根据条码的不同又分为39码等其它码.条码卡仅仅是一个编号,不存蓄其它内容.特点:价格便宜类似磁卡. 2.磁条卡:类似 ...

随机推荐

  1. Codeforces Round #528 Div. 1 自闭记

    整天自闭. A:有各种讨论方式.我按横坐标排了下然后讨论了下纵坐标单调和不单调两种情况.写了15min也就算了,谁能告诉我printf和cout输出不一样是咋回事啊?又调了10min啊?upd:突然想 ...

  2. BZOJ2458 Beijing2011最小三角形(分治)

    类似于平面最近点对,考虑分治,即分别计算分割线两侧的最小三角形再考虑跨过线的三角形. 复杂度证明也是类似的,对于某一个点,在另一侧可能与其构成最小三角形的点在一个d*d/2的矩形内(两边之和大于第三边 ...

  3. MT【110】巧设法向量解决距离问题

    分析:设面的法向量$n=(x,y,z)$

  4. 【刷题】BZOJ 2287 【POJ Challenge】消失之物

    Description ftiasch 有 N 个物品, 体积分别是 W1, W2, ..., WN. 由于她的疏忽, 第 i 个物品丢失了. "要使用剩下的 N - 1 物品装满容积为 x ...

  5. 「BJWC2018」Border 的四种求法

    「BJWC2018」Border 的四种求法 题目描述 给一个小写字母字符串 \(S\) ,\(q\) 次询问每次给出 \(l,r\) ,求 \(s[l..r]\) 的 Border . \(1 \l ...

  6. 洛谷 P2607 [ZJOI2008]骑士 解题报告

    P2607 [ZJOI2008]骑士 题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一 ...

  7. spark DataFrame 常见操作

    spark dataframe派生于RDD类,但是提供了非常强大的数据操作功能.当然主要对类SQL的支持. 在实际工作中会遇到这样的情况,主要是会进行两个数据集的筛选.合并,重新入库. 首先加载数据集 ...

  8. SCI写作经典替换词

  9. JS面向对象编程之对象(简化版)

    上次网上看了一篇这个文章,然后乱七八糟晕头转向把我晕的够呛.看了半天没找到错的地方但是浏览器Hello world就是没有定义...我也是醉了,最后发现我认为是废话的话一句话竟然有用!!!所以我还是简 ...

  10. 20155305乔磊2016-2017-2《Java程序设计》第六周学习总结

    20155305乔磊2016-2017-2<Java程序设计>第六周学习总结 教材学习内容总结 InputStream与OutputStream 串流设计 1.串流:Java将输入/输出抽 ...