IT科技类资讯

C# 调用动态链接库读取二代身份证信息

时间:2010-12-5 17:23:32  作者:数据库   来源:数据库  查看:  评论:0
内容摘要:本文转载自微信公众号「后端Q」,作者conan。转载本文请联系后端Q公众号。概述一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了。你必要有联机型居民身份证阅读器一个

本文转载自微信公众号「后端Q」,调读取代身作者conan。用动转载本文请联系后端Q公众号。态链

概述

一般来说winform应用程序解决这个问题起来时很容易的接库,云服务器web应用程序就麻烦一点了。份证你必要有联机型居民身份证阅读器一个。信息

实现方式

1、调读取代身新建一个winform控件项目ReadCardControl,云南idc服务商用动添加一个主类ReadIDCard

private bool  ReadIDCard()      {           try          {               BLL.API.SynIDCardAPI.IDCardData CardMsg = new BLL.API.SynIDCardAPI.IDCardData();              int nRet,态链 nPort;              byte[] pucIIN = new byte[4];              byte[] pucSN = new byte[8];              nPort = Convert.ToInt32(1001);              if (BLL.API.SynIDCardAPI.Syn_OpenPort(nPort) == 0)              {                   if (BLL.API.SynIDCardAPI.Syn_SetMaxRFByte(nPort, 80, 0) == 0)                  {                       nRet = BLL.API.SynIDCardAPI.Syn_StartFindIDCard(nPort, ref pucIIN[0], 0);                      nRet = BLL.API.SynIDCardAPI.Syn_SelectIDCard(nPort, ref pucSN[0], 0);                      nRet = BLL.API.SynIDCardAPI.Syn_ReadMsg(nPort, 0, ref CardMsg);                      if (nRet == 0)                      {                           txtAddress.Text = CardMsg.Address;                          txtBirthday.Text = CardMsg.Born;                          txtCerticate.Text = CardMsg.IDCardNo;                          txtIssuingAuthoriy.Text = CardMsg.GrantDept;                          txtNames.Text = CardMsg.Name;                          txtNation.Text = Xw.Common.Helper.NationHelper.GetNationByNO(CardMsg.Nation);                          txtSex.Text = CardMsg.Sex == "1" ? "男" : "女";                          picMan.Image = Image.FromFile(CardMsg.PhotoFileName);                          //lblMsg.Text = "读卡成功";                          return true;                      }                      else                      {                           lblMsg.Text = "请放卡: 读取身份证信息错误";                          return false;                      }                  }              }              else              {                   lblMsg.Text = "打开端口失败";                  return false;              }              return true;          }          catch (Exception ex)          {               Xw.Common.Helper.LogHelper.WriteErrorToLog(ex.Message);              return false;          }      } 

2、声明DllImport,接库调用动态链接库

public  class SynIDCardAPI     {          #region IDCardData         [StructLayout(LayoutKind.Sequential,份证 CharSet = CharSet.Ansi, Pack = 1)]         public struct IDCardData         {              [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] //结构中使用的字串,亿华云[]类似限定说明 说明此公共结构传输到非托管代码时封装定义             public string Name; //姓名                [MarshalAs(UnmanagedType.ByValTStr,信息 SizeConst = 6)]             public string Sex;   //性别             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]             public string Nation; //名族             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]             public string Born; //出生日期             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 72)]             public string Address; //住址             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]             public string IDCardNo; //身份证号             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]             public string GrantDept; //发证机关             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]             public string UserLifeBegin; // 有效开始日期             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]             public string UserLifeEnd;  // 有效截止日期             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]             public string reserved; // 保留             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]             public string PhotoFileName; // 照片路径         }         #endregion         #region SynIDCardAPI         /
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap