예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }