private int FillData(ref IDCardData info) { int result = -1; string pBmpFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "zp.bmp"); byte[] pName = new byte[32]; byte[] pSex = new byte[6]; byte[] pNation = new byte[30]; byte[] pBirth = new byte[18]; byte[] pAddress = new byte[72]; byte[] pCertNo = new byte[36]; byte[] pDepartment = new byte[40]; byte[] pEffectData = new byte[18]; byte[] pExpire = new byte[18]; result = HD_Read_BaseMsg(pBmpFile, pName, pSex, pNation, pBirth, pAddress, pCertNo, pDepartment, pEffectData, pExpire); if (result == 0) { info.Name = System.Text.Encoding.Default.GetString(pName).Replace("\0", "").Trim(); info.Sex = System.Text.Encoding.Default.GetString(pSex).Replace("\0", "").Trim(); info.Nation = System.Text.Encoding.Default.GetString(pNation).Replace("\0", "").Trim(); info.Born = System.Text.Encoding.Default.GetString(pBirth).Replace("\0", "").Trim(); info.Address = System.Text.Encoding.Default.GetString(pAddress).Replace("\0", "").Trim(); info.IDCardNo = System.Text.Encoding.Default.GetString(pCertNo).Replace("\0", "").Trim(); info.GrantDept = System.Text.Encoding.Default.GetString(pDepartment).Replace("\0", "").Trim(); info.UserLifeBegin = System.Text.Encoding.Default.GetString(pEffectData).Replace("\0", "").Trim(); info.UserLifeEnd = System.Text.Encoding.Default.GetString(pExpire).Replace("\0", "").Trim(); info.IDFrontImgFileName = pBmpFile; } return(result); }
/// <summary> /// 读或扫描身份证信息(照片路径,身份证扫描正反面照片路径居必传) /// </summary> /// <param name="Data">身份证结构体</param> /// <returns>成功返回0,失败返回-1,未检测到身份证返回1</returns> public int IDCardRead(ref IDCardData Data) { //先认证卡,连接 int result = HD_Authenticate(); if (result == 0) { //取数据 int flag = FillData(ref Data); return(flag == 0 ? 0 : -1); // break; } return(result); }
/// <summary> /// 读取身份证件信息 /// </summary> /// <param name="idCardType"></param> /// <returns></returns> private ResultInfo <IDCardInfo> ReadCertificateInfo(string idCardType) { _logger.Info("ReadIDCard idCardType:" + idCardType); ResultInfo <IDCardInfo> resultinfo = new ResultInfo <IDCardInfo>(); resultinfo.Code = -1; resultinfo.Message = "未知错误"; try { string comcfgFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "idcard.cfg"); int port = 1001; if (File.Exists(comcfgFile)) { string[] lines = File.ReadAllLines(comcfgFile); if (lines != null && lines.Length > 0) { port = int.Parse(lines[0]); } } IDCardHD ihd = new IDCardHD(); int state = ihd.Init(port); if (state != 0) { resultinfo.Message = "初始化设备失败,错误代码:" + state; } else { IDCardData cardData = new IDCardData(); state = ihd.IDCardRead(ref cardData); if (state != 0) { resultinfo.Message = "读卡失败,错误代码:" + state; } else { ihd.Close(); resultinfo.Code = 0; resultinfo.Message = string.Empty; resultinfo.Data = new IDCardInfo(); if (File.Exists(cardData.IDFrontImgFileName)) { resultinfo.Data.Avatar = File.ReadAllBytes(cardData.IDFrontImgFileName); File.Delete(cardData.IDFrontImgFileName); } resultinfo.Data.Name = cardData.Nation; if (cardData.Sex == "男") { resultinfo.Data.Sex = "M"; } else if (cardData.Sex == "女") { resultinfo.Data.Sex = "F"; } else { resultinfo.Data.Sex = ""; } resultinfo.Data.IDCardNo = cardData.IDCardNo; resultinfo.Data.Nation = cardData.Nation; resultinfo.Data.Address = cardData.Address; string str = cardData.Born;//20121002 if (str.Length == 8) { str = str.Insert(4, "-"); str = str.Insert(7, "-"); resultinfo.Data.BirthDay = DateTime.Parse(str); } } } } catch (Exception ex) { resultinfo.Message = ex.Message; _logger.Error("ReadIDCard", ex); } return(resultinfo); }