C#使用德卡T10读取社报告卡基本信息

注:目前大部分省份已上线国家医保,读取社会保障卡可以直接问医院要当地医保局下发的动态库进行读取。每个省份读取方式均有差异。

大部分地区支持读卡器免Psam卡交易。

文章中有测试工具与最新德卡提供的对应开发包。

补充遗漏的方法:Common.getNation Hex2ByteArr

--------------------------------------------------------------------------------------------------------------------------------

参考地址:https://so.youkuaiyun.com/so/search?q=%E7%A4%BE%E4%BF%9D%E5%8D%A1&t=blog&u=weixin_30485799

引用的SDK方法

        [DllImport("dcrf32.dll")]
        public static extern short dc_beep(int icdev, ushort _Msec);//设备蜂鸣
        [DllImport("dcrf32.dll")]
        public static extern short dc_setcpu(int icdev, [In]byte _Byte); //设置当前接触式卡座
        [DllImport("dcrf32.dll")]
        public static extern short dc_cpureset(int icdev, ref byte rlen, [Out]byte[] databuffer);//接触式CPU卡复位
        [DllImport("dcrf32.dll")]
        public static extern short hex_a([In] byte[] hex, [Out] byte[] a, short length);//普通数据转换16进制字符串(短转长)
        [DllImport("dcrf32.dll")]
        public static extern short dc_cpuapduInt(int icdev, uint slen, [In]byte[] sendbuffer, ref uint rlen, [Out]byte[] databuffer);//指令交互     

社保卡信息类

 public class MedicareCard
    {  
        /// <summary>
       /// 发卡地区行政区划代码(卡识别码前6位)
       /// </summary>
        public string IssuingAreaCode { get; set; }
        /// <summary>
        /// 社会保障号码(身份证号码)
        /// </summary>
        public string SocialNo{ get; set; }
        /// <summary>
        /// 卡号
        /// </summary>
        public string HealthCareCardNo{ get; set; }
        /// <summary>
        /// 卡识别码
        /// </summary>
        public string IdentificationCode{ get; set; }
        /// <summary>
        /// 姓名
        /// </summary>
        public string Name{ get; set; }
        /// <summary>
        /// 出生地
        /// </summary>
        public string Address{ get; set; }
        /// <summary>
        /// 性别
        /// </summary>
        public string Sex{ get; set; }
        /// <summary>
        /// 民族
        /// </summary>
        public string Nation{ get; set; }
        /// <summary>
        /// 出生日期
        /// </summary>
        public string Birthdate{ get; set; }
        /// <summary>
        /// 社保卡余额
        /// </summary>
        public string Balance{ get; set; }
        /// <summary>
        /// 卡复位信息(仅取历史字节)
        /// </summary>
        public string CardResetInformation{ get; set; }
        /// <summary>
        /// 规范版本
        /// </summary>
        public string CanonicalVersion{ get; set; }
        /// <summary>
        /// 发卡日期
        /// </summary>
        public string StartDate{ get; set; }
        /// <summary>
        /// 卡有效期
        /// </summary>
        public string EndDate{ get; set; }
        /// <summary>
        /// 终端机编号
        /// </summary>
        public string TerminalNO{ get; set; }
        /// <summary>
        /// 终端设备号
        /// </summary>
        public string TerminalEquipmentNo{ get; set; }
    }

调用代码

 public MedicareCard IC_ReadMedicare()
        {
            MedicareCard CraeCard = new MedicareCard();

            string str;
            int st;
            dc_beep(Handle, 10);
            //射频复位
            dc_setcpu(Handle, (byte)ContactClamp.NO1); //设置接触式卡座
            byte rcardlen = 0;
            uint rlen = 0;
            byte[] databuffer = new byte[100];
            byte[] databufferhex = new byte[100];
            dc_cpureset(Handle, ref rcardlen, databuffer);//接触式CPU卡复位
            hex_a(databuffer, databufferhex, (short)rlen);
            /*
            选择应用环境  00 A4 04 00 0F 73 78 31 2E 73 68 2E C9 E7 BB E1 B1 A3 D5 CF 00
            选择EF05文件	00 A4 02 00 02 EF 05 00    选择EF06文件  00A402000
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值