public void SetIDCard(IDCard card) { this.txtName.Text = card.Name; this.txtIdCard.Text = card.IDC; this.txtAddress.Text = card.ADDRESS; this.dateBirthday.Value = card.BIRTH; this.cbSex.Text = IDCardHelper.GetSexName(card.IDC); }
private static void ReadIdCard(IDCard idcard) { string path = Application.StartupPath+"//success.wav"; SystemDefine.PlaySound(path, 0, SystemDefine.SND_ASYNC | SystemDefine.SND_FILENAME);//播放音乐 SendKeys.SendWait(idcard.IDC.ToUpper()); IDCardConfig config = StaticCacheManager.GetConfig<IDCardConfig>(); if (config.AddReturn) { SendKeys.SendWait("{ENTER}"); } }
/// <summary> /// 读取身份证信息 /// </summary> public void Read() { if (!this.hasInit) { this.Init(); } IDCard card = new IDCard(); if (CVR_Read_Content(1) == 0) { throw new Exception("未放卡或卡片放置不正确!"); } }
private void AfterReadIdCard(IDCard card) { //TODO,所属地区代码的实现 // card.PIC_Image; this.lbIdCardQfjg.Text = card.REGORG; this.lbIdCardYxqx.Text = card.Period_Of_Validity_CName; this.picIdCardImage.Image = card.PIC_Image; this.picIdCardImage.SizeMode = PictureBoxSizeMode.StretchImage; this.lbIdCardSfzmhm.Text = card.IDC; this.lbIDCardName.Text = card.Name; this.lbIdCardNational.Text = card.IDC; // this.InitByIdCard(this.txtIdCard.Text); this.lbIdCardAddress.Text = card.ADDRESS; this.lbIdCardBirthDay.Text = card.BIRTH.ToString("yyyy 年 MM 月 dd 日"); this.lbIdCardSex.Text = IDCardHelper.GetSexName(card.IDC); }
public void ReadFromFile(IDCard card) { FileInfo f = new FileInfo("wz.txt"); FileStream fs = f.OpenRead(); byte[] bt = new byte[fs.Length]; fs.Read(bt, 0, (int)fs.Length); fs.Close(); string str = System.Text.UnicodeEncoding.Unicode.GetString(bt); card.Name = System.Text.UnicodeEncoding.Unicode.GetString(bt, 0, 30).Trim(); card.Sex_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 30, 2).Trim(); card.NATION_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 32, 4).Trim(); string strBird = System.Text.UnicodeEncoding.Unicode.GetString(bt, 36, 16).Trim(); card.BIRTH = Convert.ToDateTime(strBird.Substring(0, 4) + "年" + strBird.Substring(4, 2) + "月" + strBird.Substring(6) + "日"); card.ADDRESS = System.Text.UnicodeEncoding.Unicode.GetString(bt, 52, 70).Trim(); card.IDC = System.Text.UnicodeEncoding.Unicode.GetString(bt, 122, 36).Trim(); card.REGORG = System.Text.UnicodeEncoding.Unicode.GetString(bt, 158, 30).Trim(); string strTem = System.Text.UnicodeEncoding.Unicode.GetString(bt, 188, bt.GetLength(0) - 188).Trim(); card.STARTDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); strTem = strTem.Substring(8); if (strTem.Trim() != "长期") { card.ENDDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); } else { card.ENDDATE = DateTime.MaxValue; } FileInfo objFile = null; objFile = new FileInfo("zp.bmp"); if (objFile.Exists) { Image img = Image.FromFile("zp.bmp"); card.PIC_Image = (Image)img.Clone(); System.IO.MemoryStream m = new MemoryStream(); img.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg); card.PIC_Byte = m.ToArray(); img.Dispose(); img = null; } }
public IDCard Clone() { IDCard tmp = new IDCard(); tmp.ADDRESS = this.ADDRESS; tmp.BIRTH = this.BIRTH; tmp.ENDDATE = this.ENDDATE; tmp.IDC = this.IDC; tmp.Name = this.Name; tmp.NATION_CName = this.NATION_CName; tmp.NATION_Code = this.NATION_Code; tmp.Period_Of_Validity_CName = this.Period_Of_Validity_CName; tmp.Period_Of_Validity_Code = this.Period_Of_Validity_Code; tmp.PIC_Byte = this.PIC_Byte; tmp.PIC_Image = this.PIC_Image; tmp.REGORG = this.REGORG; tmp.Sex_CName = this.Sex_CName; tmp.Sex_Code = this.Sex_Code; tmp.STARTDATE = this.STARTDATE; return(tmp); }
private void AfterReadIdCard(IDCard card) { //TODO,������������ʵ�� this.txtName.Text = card.Name; this.txtIdCard.Text = card.IDC; this.InitByIdCard(this.txtIdCard.Text); this.txtRegAddress.Text=this.txtConnAddress.Text = card.ADDRESS; this.dateBirthday.Value = card.BIRTH; this.cbSex.Text = IDCardHelper.GetSexName(card.IDC); }
private void ReadIdCardComplete(IDCard card) { if (card != null) { this.cbBaseSyrIdCardType.SelectedIndex = 0; this.txtBaseSyrIdCard.Text = card.IDC; this.txtBaseSyrConnAddress.Text = card.ADDRESS; this.txtBaseSyrRegAddress.Text = card.ADDRESS; //card.REGORG this.txtBaseSyrName.Text = card.Name; } }
private void AfterReadIdCard(IDCard card) { this.personDetail1.SetIDCard(card); }
/// <summary> /// 读卡,返回各种原因 /// </summary> /// <returns> /// -1:端口打开失败,请检测相应的端口或者重新连接读卡器 /// 1:未放卡或者卡未放好 /// 2:读卡失败 /// 3:读卡数据失败 /// 0:读卡成功 /// </returns> public int ReadICCard() { bool bUsbPort = false; int intOpenPortRtn = 0; int rtnTemp = 0; int pucIIN = 0; int pucSN = 0; int puiCHMsgLen = 0; int puiPHMsgLen = 0; objEDZ = new IDCard(); //检测usb口的机具连接,必须先检测usb for (int iPort = 1001; iPort <= 1016; iPort++) { intOpenPortRtn = SDT_OpenPort(iPort); if (intOpenPortRtn == 144) { EdziPortID = iPort; bUsbPort = true; log.Debug("二代证读卡器连接的端口为!"+iPort); break; } } //检测串口的机具连接 if (!bUsbPort) { for (int iPort = 1; iPort <= 8; iPort++) { intOpenPortRtn = SDT_OpenPort(iPort); if (intOpenPortRtn == 144) { EdziPortID = iPort; bUsbPort = false; break; } } } if (intOpenPortRtn != 144) { log.Debug("端口打开失败,请检测相应的端口或者重新连接读卡器!"); //MessageBox.Show("端口打开失败,请检测相应的端口或者重新连接读卡器!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return -1; } //在这里,如果您想下一次不用再耗费检查端口的检查的过程,您可以把 EdziPortID 保存下来,可以保存在注册表中,也可以保存在配置文件中,我就不多写了,但是, //您要考虑机具连接端口被用户改变的情况哦 //下面找卡 rtnTemp = SDT_StartFindIDCard(EdziPortID, ref pucIIN, EdziIfOpen); if (rtnTemp != 159) { rtnTemp = SDT_StartFindIDCard(EdziPortID, ref pucIIN, EdziIfOpen); //再找卡 if (rtnTemp != 159) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("未放卡或者卡未放好,请重新放卡!"); //MessageBox.Show("", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return 1; } } //选卡 rtnTemp = SDT_SelectIDCard(EdziPortID, ref pucSN, EdziIfOpen); if (rtnTemp != 144) { rtnTemp = SDT_SelectIDCard(EdziPortID, ref pucSN, EdziIfOpen); //再选卡 if (rtnTemp != 144) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("读卡失败!"); // MessageBox.Show("读卡失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return 2; } } //注意,在这里,用户必须有应用程序当前目录的读写权限 FileInfo objFile = new FileInfo("wz.txt"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } objFile = new FileInfo("zp.bmp"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } objFile = new FileInfo("zp.wlt"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } rtnTemp = SDT_ReadBaseMsgToFile(EdziPortID, "wz.txt", ref puiCHMsgLen, "zp.wlt", ref puiPHMsgLen, EdziIfOpen); if (rtnTemp != 144) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("读卡数据失败!"); // MessageBox.Show("读卡失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return 3; } //下面解析照片,注意,如果在C盘根目录下没有机具厂商的授权文件Termb.Lic,照片解析将会失败 if (bUsbPort) rtnTemp = GetBmp("zp.wlt", 2); else rtnTemp = GetBmp("zp.wlt", 1); switch (rtnTemp) { case 0: log.Debug("调用sdtapi.dll错误!"); //MessageBox.Show("调用sdtapi.dll错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 1: //正常 break; case -1: log.Debug("调用sdtapi.dll错误!"); // MessageBox.Show("相片解码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -2: log.Debug("wlt文件后缀错误!"); // MessageBox.Show("wlt文件后缀错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -3: log.Debug("wlt文件打开错误!"); //MessageBox.Show("wlt文件打开错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -4: log.Debug("wlt文件格式错误!"); // MessageBox.Show("wlt文件格式错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -5: log.Debug("软件未授权!"); // MessageBox.Show("软件未授权!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -6: log.Debug("设备连接错误!"); //MessageBox.Show("设备连接错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } rtnTemp = SDT_ClosePort(EdziPortID); FileInfo f = new FileInfo("wz.txt"); FileStream fs = f.OpenRead(); byte[] bt = new byte[fs.Length]; fs.Read(bt, 0, (int)fs.Length); fs.Close(); string str = System.Text.UnicodeEncoding.Unicode.GetString(bt); objEDZ.Name = System.Text.UnicodeEncoding.Unicode.GetString(bt, 0, 30).Trim(); objEDZ.Sex_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 30, 2).Trim(); objEDZ.NATION_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 32, 4).Trim(); string strBird = System.Text.UnicodeEncoding.Unicode.GetString(bt, 36, 16).Trim(); objEDZ.BIRTH = Convert.ToDateTime(strBird.Substring(0, 4) + "年" + strBird.Substring(4, 2) + "月" + strBird.Substring(6) + "日"); objEDZ.ADDRESS = System.Text.UnicodeEncoding.Unicode.GetString(bt, 52, 70).Trim(); objEDZ.IDC = System.Text.UnicodeEncoding.Unicode.GetString(bt, 122, 36).Trim(); objEDZ.REGORG = System.Text.UnicodeEncoding.Unicode.GetString(bt, 158, 30).Trim(); string strTem = System.Text.UnicodeEncoding.Unicode.GetString(bt, 188, bt.GetLength(0) - 188).Trim(); objEDZ.STARTDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); strTem = strTem.Substring(8); if (strTem.Trim() != "长期") { objEDZ.ENDDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); } else { objEDZ.ENDDATE = DateTime.MaxValue; } objFile = new FileInfo("zp.bmp"); if (objFile.Exists) { Image img = Image.FromFile("zp.bmp"); objEDZ.PIC_Image = (Image)img.Clone(); System.IO.MemoryStream m = new MemoryStream(); img.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg); objEDZ.PIC_Byte = m.ToArray(); img.Dispose(); img = null; } // ReadICCardComplete(objEDZ); //System.Threading.Thread.Sleep(50); return 0; }
public IDCard Clone() { IDCard tmp = new IDCard(); tmp.ADDRESS = this.ADDRESS; tmp.BIRTH = this.BIRTH; tmp.ENDDATE = this.ENDDATE; tmp.IDC = this.IDC; tmp.Name = this.Name; tmp.NATION_CName = this.NATION_CName; tmp.NATION_Code = this.NATION_Code; tmp.Period_Of_Validity_CName = this.Period_Of_Validity_CName; tmp.Period_Of_Validity_Code = this.Period_Of_Validity_Code; tmp.PIC_Byte = this.PIC_Byte; tmp.PIC_Image = this.PIC_Image; tmp.REGORG = this.REGORG; tmp.Sex_CName = this.Sex_CName; tmp.Sex_Code = this.Sex_Code; tmp.STARTDATE = this.STARTDATE; return tmp; }
void reader_ReadICCardComplete(IDCard card) { this.txtName.Text = card.Name; this.txtSex.Text = card.Sex_CName; this.txtRace.Text = card.NATION_CName; this.txtBirthday.Text = card.BIRTH.ToShortDateString(); this.txtAddress.Text = card.ADDRESS; this.txtDateBegin.Text = card.STARTDATE.ToShortDateString(); this.txtDateEnd.Text = card.ENDDATE.ToShortDateString(); this.txtNewData.Text = card.Period_Of_Validity_CName; this.pictureBox1.Image=card.PIC_Image; }
void cvReader_AfterReadICCardComplete(IDCard card) { //throw new Exception("The method or operation is not implemented."); }
/// <summary> /// 读卡,返回各种原因 /// </summary> /// <returns> /// -1:端口打开失败,请检测相应的端口或者重新连接读卡器 /// 1:未放卡或者卡未放好 /// 2:读卡失败 /// 3:读卡数据失败 /// 0:读卡成功 /// </returns> public int ReadICCard() { bool bUsbPort = false; int intOpenPortRtn = 0; int rtnTemp = 0; int pucIIN = 0; int pucSN = 0; int puiCHMsgLen = 0; int puiPHMsgLen = 0; objEDZ = new IDCard(); //检测usb口的机具连接,必须先检测usb for (int iPort = 1001; iPort <= 1016; iPort++) { intOpenPortRtn = SDT_OpenPort(iPort); if (intOpenPortRtn == 144) { EdziPortID = iPort; bUsbPort = true; log.Debug("二代证读卡器连接的端口为!" + iPort); break; } } //检测串口的机具连接 if (!bUsbPort) { for (int iPort = 1; iPort <= 8; iPort++) { intOpenPortRtn = SDT_OpenPort(iPort); if (intOpenPortRtn == 144) { EdziPortID = iPort; bUsbPort = false; break; } } } if (intOpenPortRtn != 144) { log.Debug("端口打开失败,请检测相应的端口或者重新连接读卡器!"); //MessageBox.Show("端口打开失败,请检测相应的端口或者重新连接读卡器!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(-1); } //在这里,如果您想下一次不用再耗费检查端口的检查的过程,您可以把 EdziPortID 保存下来,可以保存在注册表中,也可以保存在配置文件中,我就不多写了,但是, //您要考虑机具连接端口被用户改变的情况哦 //下面找卡 rtnTemp = SDT_StartFindIDCard(EdziPortID, ref pucIIN, EdziIfOpen); if (rtnTemp != 159) { rtnTemp = SDT_StartFindIDCard(EdziPortID, ref pucIIN, EdziIfOpen); //再找卡 if (rtnTemp != 159) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("未放卡或者卡未放好,请重新放卡!"); //MessageBox.Show("", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(1); } } //选卡 rtnTemp = SDT_SelectIDCard(EdziPortID, ref pucSN, EdziIfOpen); if (rtnTemp != 144) { rtnTemp = SDT_SelectIDCard(EdziPortID, ref pucSN, EdziIfOpen); //再选卡 if (rtnTemp != 144) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("读卡失败!"); // MessageBox.Show("读卡失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(2); } } //注意,在这里,用户必须有应用程序当前目录的读写权限 FileInfo objFile = new FileInfo("wz.txt"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } objFile = new FileInfo("zp.bmp"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } objFile = new FileInfo("zp.wlt"); if (objFile.Exists) { objFile.Attributes = FileAttributes.Normal; objFile.Delete(); } rtnTemp = SDT_ReadBaseMsgToFile(EdziPortID, "wz.txt", ref puiCHMsgLen, "zp.wlt", ref puiPHMsgLen, EdziIfOpen); if (rtnTemp != 144) { rtnTemp = SDT_ClosePort(EdziPortID); log.Debug("读卡数据失败!"); // MessageBox.Show("读卡失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return(3); } //下面解析照片,注意,如果在C盘根目录下没有机具厂商的授权文件Termb.Lic,照片解析将会失败 if (bUsbPort) { rtnTemp = GetBmp("zp.wlt", 2); } else { rtnTemp = GetBmp("zp.wlt", 1); } switch (rtnTemp) { case 0: log.Debug("调用sdtapi.dll错误!"); //MessageBox.Show("调用sdtapi.dll错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case 1: //正常 break; case -1: log.Debug("调用sdtapi.dll错误!"); // MessageBox.Show("相片解码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -2: log.Debug("wlt文件后缀错误!"); // MessageBox.Show("wlt文件后缀错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -3: log.Debug("wlt文件打开错误!"); //MessageBox.Show("wlt文件打开错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -4: log.Debug("wlt文件格式错误!"); // MessageBox.Show("wlt文件格式错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -5: log.Debug("软件未授权!"); // MessageBox.Show("软件未授权!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case -6: log.Debug("设备连接错误!"); //MessageBox.Show("设备连接错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); break; } rtnTemp = SDT_ClosePort(EdziPortID); FileInfo f = new FileInfo("wz.txt"); FileStream fs = f.OpenRead(); byte[] bt = new byte[fs.Length]; fs.Read(bt, 0, (int)fs.Length); fs.Close(); string str = System.Text.UnicodeEncoding.Unicode.GetString(bt); objEDZ.Name = System.Text.UnicodeEncoding.Unicode.GetString(bt, 0, 30).Trim(); objEDZ.Sex_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 30, 2).Trim(); objEDZ.NATION_Code = System.Text.UnicodeEncoding.Unicode.GetString(bt, 32, 4).Trim(); string strBird = System.Text.UnicodeEncoding.Unicode.GetString(bt, 36, 16).Trim(); objEDZ.BIRTH = Convert.ToDateTime(strBird.Substring(0, 4) + "年" + strBird.Substring(4, 2) + "月" + strBird.Substring(6) + "日"); objEDZ.ADDRESS = System.Text.UnicodeEncoding.Unicode.GetString(bt, 52, 70).Trim(); objEDZ.IDC = System.Text.UnicodeEncoding.Unicode.GetString(bt, 122, 36).Trim(); objEDZ.REGORG = System.Text.UnicodeEncoding.Unicode.GetString(bt, 158, 30).Trim(); string strTem = System.Text.UnicodeEncoding.Unicode.GetString(bt, 188, bt.GetLength(0) - 188).Trim(); objEDZ.STARTDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); strTem = strTem.Substring(8); if (strTem.Trim() != "长期") { objEDZ.ENDDATE = Convert.ToDateTime(strTem.Substring(0, 4) + "年" + strTem.Substring(4, 2) + "月" + strTem.Substring(6, 2) + "日"); } else { objEDZ.ENDDATE = DateTime.MaxValue; } objFile = new FileInfo("zp.bmp"); if (objFile.Exists) { Image img = Image.FromFile("zp.bmp"); objEDZ.PIC_Image = (Image)img.Clone(); System.IO.MemoryStream m = new MemoryStream(); img.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg); objEDZ.PIC_Byte = m.ToArray(); img.Dispose(); img = null; } // ReadICCardComplete(objEDZ); //System.Threading.Thread.Sleep(50); return(0); }