//***************************************************************************** // // 中国航天科工集团第二研究院 // 北京无线电计量测试研究所 // 计量与校准国防科技重点实验室 // // 项目名称: 双目虹膜信息综合管理平台 // // 配合SY望远镜式双目注册设备使用 // //***************************************************************************** using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Runtime.InteropServices; using System.Windows.Forms; using System.Reflection; using System.Diagnostics; using IOM_cs.insertForm.service; using System.Web.Script.Serialization; using IOM_cs.insertForm.data.dto; using IOM_cs.irisDb.model; using IOM_cs.irisDb.service; //using IOM_cs.irisDb.service.mySqlImpl; using IOM_cs.insertForm.service.impl; using IOM_cs.irisDb; using System.Threading; using SuperWebSocket; using System.Web; using WebSocketSharp; using System.Data; using IOM_cs.insertForm.sysSetting; using ImageFormatter; using IAiCamIrisLib; using Newtonsoft.Json; namespace IOM_cs { public delegate void Handled1(); public partial class FormMain : Form { #region 成员变量 private FormLogin formLogin; //登陆界面 public static User user; private iCamIrisClass m_iCamIrisLib = new iCamIrisClass(); public static FormMain formMain = null; public static Person person = new Person(); //sys_person表实体 public static IrisData irisData = new IrisData(); // iris_data表实体 public static bool devInited = false; // 虹膜采集设备初始化成功标识 private bool cardReaderInited = false; // 身份证读卡器初始化成功标识 //private iCamIrisClass m_iCamIrisClass = new iCamIrisClass(); // 编码类 private Point mouseOff; // 鼠标移动位置变量 private bool leftFlag; // 标签是否为左键 private bool isCaptureForce; // 是否强制采集标识 private bool isICSConnected=false;// 是否与ics建立连接标识 public static IrisCodeListMgr m_CodeListMgr = new IrisCodeListMgr(); /* 虹膜匹配识别控制类 */ //private Thread initDevThread; public static IInsertService insertService = new InsertImpl(); public CtrlDept ctrlDept = new CtrlDept(); private bool btn_collectInfoClick = true; private bool btn_collectListClick = false; private bool btn_settinClick = false; private bool btn_recognitionClick = false; private bool btn_writeDataClick = false; private string deptId = ""; private bool isCapturing = false; public static string deviceType="1";// 采集设备类型 public static string eyeType = "3";//采集类型 object hmzp_zy = null;//左眼虹膜图片base64编码 object hmzp_yy = null;//右眼虹膜图片base64编码 IPersonService iPersonService = (IPersonService)DbService.getEntity("IPersonService"); IRecognitionService iRecognitionService = (IRecognitionService)DbService.getEntity("IRecognitionService"); #endregion 成员变量 public FormMain() { try { formMain = this; user = FormLogin.user; // 初始化控件 InitializeComponent(); // 设置双缓冲 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.OptimizedDoubleBuffer, true); // 跨线程访问控件 CheckForIllegalCrossThreadCalls = false; axIrisDevCtrl1.Height = 150; axIrisDevCtrl1.Width = 420; } catch (Exception ex) { LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, "注册界面初始化错误:" + ex.Message); } } private void FormMain_Load(object sender, EventArgs e) { this.FormClosing += new FormClosingEventHandler(this.Form1_FormClosing); label_wellcome.Text = "欢迎您," + FormLogin.user.Name + "!"; btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2"); tabControl_Main.Location = new Point(24, 28); tabControl_Main.SelectedIndex = 0; ConfigHelper.GetAppConfig("sqlType"); deviceType = ConfigHelper.GetAppConfig("deviceType"); if (deviceType == "1") { btn_captureForce.Enabled = false; } if (ConfigHelper.GetAppConfig("systemType") == "1") { btn_writeData.Visible = true; label_cost.Visible = true; } else { btn_writeData.Visible = false; label_cost.Visible = false; } } private void FormMain_Shown(object sender, EventArgs e) { // 初始化下拉框数据 initComboBoxList(); // 初始化部分输入框内容 initInputItems(); treeView_dept.SelectedNode = null; comboBox_nation.SelectedIndex = -1; // 解决初始化花屏问题,等窗体显示完再显示自定义控件 btn_collectInfo.Visible = true; btn_collectList.Visible = true; btn_setting.Visible = true; btn_recognition.Visible = true; } #region 导入库文件 // 身份证读卡 [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)] static extern int SDT_OpenPort(int iPort); [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)] static extern int SDT_ClosePort(int iPort); [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)] static extern int SDT_StartFindIDCard(int iPort, byte[] pucManaInfo, int iIfOpen); [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)] static extern int SDT_SelectIDCard(int iPort, byte[] pucManaMsg, int iIfOpen); [DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)] static extern int SDT_ReadBaseMsg(int iPort, byte[] pucCHMsg, ref UInt32 puiCHMsgLen, byte[] pucPHMsg, ref UInt32 puiPHMsgLen, int iIfOpen); [DllImport("WltRS.dll", CallingConvention = CallingConvention.StdCall)] static extern int GetBmp(string Wlt_File, int intf); #endregion #region 初始化控件及值 // 初始化各个下拉列表 private void initComboBoxList() { ctrlDept.loadData(); // 民族 var items = new System.Collections.ArrayList(Enum.GetValues(typeof(nation))).ToArray(); comboBox_nation.Items.Clear(); comboBox_nation.Items.AddRange(items); // 采集类型(双眼、左眼、右眼) items = new System.Collections.ArrayList(Enum.GetValues(typeof(collType))).ToArray(); comboBox_collType.Items.Clear(); comboBox_collType.Items.AddRange(items); } // 设置部分输入项初始值 private void initInputItems() { // 采集类型 comboBox_collType.SelectedItem = collType.双眼; txt_collType.Text = comboBox_collType.SelectedItem.ToString(); // 民族 comboBox_nation.SelectedItem = nation.汉族; } // 重置第一步页面内容 private void resetStep1() { txt_name.Clear(); radio_female.Checked = false; radio_male.Checked = false; comboBox_nation.SelectedIndex = -1; txt_addr.Clear(); picker_birthday.Text = ""; txt_birthday.Clear(); txt_IDCardNo.Clear(); txt_remarks.Clear(); treeView_dept.SelectedNode = null; txt_dept.Text = ""; txt_cerAuth.Text = ""; pic_IDFace.Image = null; btn_nextStep12.Enabled = true; txt_dept.Clear(); txt_nation.Clear(); txt_staffNo.Clear(); treeView_dept.Visible = false; } //重置第三步页面内容 private void resetStep3() { comboBox_collType.SelectedItem = collType.双眼; txt_collType.Text = comboBox_collType.SelectedItem.ToString(); btn_captureForce.Enabled = false; pic_imageL1.Image = null; pic_imageR1.Image = null; label_qualityL.Text = ""; label_qualityR.Text = ""; } #endregion #region step1 /// <summary> /// 上传本地照片 /// </summary> private void btn_localPhoto_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); //显示选择文件对话框 openFileDialog1.InitialDirectory = "c:\\"; openFileDialog1.Filter = "(*.jpg,*.bmp,*.png)|*.jpg;*.bmp;*.png"; openFileDialog1.FilterIndex = 2; openFileDialog1.RestoreDirectory = true; if (openFileDialog1.ShowDialog() == DialogResult.OK) { string path = openFileDialog1.FileName; //文件路径 FileInfo fileInfo = new FileInfo(path); // 限制文件大小 if (fileInfo.Length > 200 * 1024) { MessageBox.Show("请选择小于200KB的图片"); } else { pic_IDFace.Image = Image.FromFile(path); } } } /// <summary> /// 读取证件信息 /// </summary> private void btn_readCard_Click(object sender, EventArgs e) { try { //string icsResult = ""; //if (!isICSConnected) //与ICS服务通信 //using (var ws = new WebSocket("ws://127.0.0.1:1234")) //{ // ws.OnMessage += (sender2, e2) => // icsResult = e2.Data; // ws.Connect(); // ws.Send("ReadIdCard"); // while (true) // { // if (icsResult.Length <= 0) continue; // if (!string.IsNullOrWhiteSpace(icsResult)) // MessageBox.Show(icsResult); // icsResult = ""; // ws.Close(); // break; // } // //new Thread(new ThreadStart(() => // //{ // //})).Start(); //} byte[] CardPUCIIN = new byte[255]; byte[] pucManaMsg = new byte[255]; byte[] pucCHMsg = new byte[255]; byte[] pucPHMsg = new byte[3024]; UInt32 puiCHMsgLen = 0; UInt32 puiPHMsgLen = 0; int st = 0; st = SDT_StartFindIDCard(1001, CardPUCIIN, 1); if (st == 0x9f) { st = SDT_SelectIDCard(1001, pucManaMsg, 1); if (st == 0x90) { st = SDT_ReadBaseMsg(1001, pucCHMsg, ref puiCHMsgLen, pucPHMsg, ref puiPHMsgLen, 1); if (st == 0x90) { string name = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 0, 30).Trim(); string gender = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 30, 2).Trim(); string nation = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 32, 4).Trim(); string birthDate = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 36, 16).Trim(); string address = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 52, 70).Trim(); string noID = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 122, 36).Trim(); string authority = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg, 158, 30).Trim(); DateTime birthDate0 = DateTime.ParseExact(birthDate, "yyyyMMdd", null); string path0 = System.Windows.Forms.Application.StartupPath + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss"); string path = path0 + ".wlt"; File.Delete(path); FileStream fs = File.Open(path, FileMode.Append); fs.Write(pucPHMsg, 0, (int)puiPHMsgLen); fs.Close(); int img = GetBmp(path, 2); string faceImageLoadPath = path0 + ".bmp"; ImageFormat faceImageLoadFormat = ImageFormat.Bmp; txt_name.Text = name; if (gender == "1") radio_male.Checked = true; else if (gender == "2") radio_female.Checked = true; comboBox_nation.SelectedItem = Enum.Parse(typeof(nation), nation); picker_birthday.Value = birthDate0; txt_birthday.Text = birthDate0.ToString("yyyy-MM-dd"); txt_addr.Text = address; txt_IDCardNo.Text = noID; txt_cerAuth.Text = authority; //txt_remarks.Text = countAge(birthDate0); Image imgF = Image.FromFile(faceImageLoadPath); Image bmpF = new Bitmap(imgF); imgF.Dispose(); pic_IDFace.Image = bmpF; //File.Delete(faceImageLoadPath); } else { resetStep1(); } } } else { MessageBox.Show("读卡失败,请检查卡片放置位置。", "提示"); resetStep1(); return; } } catch (Exception ex) { string msg = "读取身份证出错:" + ex.Message; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); } } // 重置 private void btn_reset_Click(object sender, EventArgs e) { resetStep1(); } // 下一步 private void btn_nextStep12_Click(object sender, EventArgs e) { try { if (txt_name.Text.Trim() == "") { MessageBox.Show(this, "姓名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } else { if (!Validation.CheckName(txt_name.Text.Trim())) { MessageBox.Show(this, "请输入真实姓名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } if (txt_dept.Text.Trim() == "") { MessageBox.Show(this, "部门不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } if (txt_IDCardNo.Text != "") { if (!Validation.CheckIDCard(txt_IDCardNo.Text.Trim())) { MessageBox.Show(this, "请输入正确的身份证号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } //判断身份证号是否重复 if (iPersonService.IsIdCardNoPresent(txt_IDCardNo.Text.Trim()) > 0) { MessageBox.Show("已存在该证件号码!"); return; } } // 与身份证号相互校验 if (txt_IDCardNo.Text != "") { if (txt_IDCardNo.Text.Length == 18) { if ((Convert.ToInt16(txt_IDCardNo.Text.Substring(16, 1)) % 2) == 1)//奇数 { radio_male.Checked = true; } else radio_female.Checked = true; } if (txt_birthday.Text != "") { string birth = ""; if (txt_IDCardNo.Text.Length == 15) birth = ("19" + txt_IDCardNo.Text.Substring(6, 6)).Insert(2, "-").Insert(5, "-"); else if (txt_IDCardNo.Text.Length == 18) birth = txt_IDCardNo.Text.Substring(6, 8).Insert(4, "-").Insert(7, "-"); if (birth != txt_birthday.Text) { MessageBox.Show(this, "所选生日与身份证号中的生日不一致!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } } } //判断员工编号是否重复 if (txt_staffNo.Text.Trim() != "" && iPersonService.IsStaffNoPresent(txt_staffNo.Text.Trim()) > 0) { MessageBox.Show("已存在该员工编号!"); return; } //收集数据 person = new Person(); person.name = txt_name.Text.Trim(); // 姓名 if (txt_staffNo.Text.Trim() != "") person.staffNo = txt_staffNo.Text.Trim();// 员工编号 person.deptId = Convert.ToInt64(deptId);// 部门 if (radio_male.Checked) person.sex = ((int)sex.男).ToString(); else if (radio_female.Checked) person.sex = ((int)sex.女).ToString(); // 性别 if (txt_IDCardNo.Text.Trim() != "") person.idCardNo = txt_IDCardNo.Text.Trim(); // 证件号码 if (comboBox_nation.SelectedIndex > -1) person.nation = comboBox_nation.SelectedItem.GetHashCode().ToString(); // 民族 if (txt_birthday.Text != "") person.birthday = Convert.ToDateTime(txt_birthday.Text);//生日 person.cerAuth = txt_cerAuth.Text.Trim(); // 颁证单位 person.addr = txt_addr.Text.Trim(); // 住址 person.remarks = txt_remarks.Text.Trim(); // 备注 if (pic_IDFace.Image != null)//证件照 { Image img = pic_IDFace.Image; MemoryStream ms = new MemoryStream(); img.Save(ms, ImageFormat.Bmp); byte[] arr = ms.ToArray(); ms.Close(); person.photoData = "data:image/png;base64," + Convert.ToBase64String(arr); } panel_btn.Visible = false; panel_result.Visible = false; btn_save.Visible = true; btn_lastStep32.Visible = true; //刷新步骤条状态 tabControl_Main.SelectedIndex = 1; } catch (Exception ex) { string msg = "保存基础信息出错:" + ex.Message; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); } } /// <summary> /// 选择生日 /// </summary> private void picker_birthday_ValueChanged(object sender, EventArgs e) { if (picker_birthday.Value > DateTime.Now) { MessageBox.Show("请选择正确的出生日期!", "提示"); return; } txt_birthday.Text = picker_birthday.Value.ToString("yyyy-MM-dd"); //txt_remarks.Text = countAge(picker_birthday.Value); //年龄 //txt_birthday.Focus(); } // 从身份证号得到生日和性别 private void txt_IDCardNo_TextChanged(object sender, EventArgs e) { if (txt_IDCardNo.Text != "") { if (Validation.CheckIDCard(txt_IDCardNo.Text)) { string idCardNo = txt_IDCardNo.Text; string birth = ""; if (idCardNo.Length == 15) birth = "19" + idCardNo.Substring(6, 6).Insert(2, "-").Insert(5, "-"); else if (idCardNo.Length == 18) { birth = idCardNo.Substring(6, 8).Insert(4, "-").Insert(7, "-"); if ((Convert.ToInt16(idCardNo.Substring(16, 1)) % 2) == 1)//奇数 { radio_male.Checked = true; } else radio_female.Checked = true; } txt_birthday.Text = birth; //txt_remarks.Text = countAge(Convert.ToDateTime(birth)); } } } // 展示部门 private void btn_dropDept_Click(object sender, EventArgs e) { //comboBox_dept.DroppedDown = true; treeView_dept.Visible = !treeView_dept.Visible; ctrlDept.loadData(); treeView_dept.Nodes.Clear(); int index = 0; if (CtrlDept.parent.Rows.Count > 0) { foreach (DataRow rowParent in CtrlDept.parent.Rows) { TreeNode parentNode = new TreeNode(); parentNode.Text = rowParent[2].ToString(); parentNode.Tag = rowParent[0].ToString(); treeView_dept.Nodes.Add(parentNode); foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows) { TreeNode childNode = new TreeNode(); childNode.Text = rowChild[2].ToString(); childNode.Tag = rowChild[0].ToString(); treeView_dept.Nodes[index].Nodes.Add(childNode); } index++; } } else { foreach (DataRow rowChild in CtrlDept.children.Tables[0].Rows) { TreeNode childNode = new TreeNode(); childNode.Text = rowChild[2].ToString(); childNode.Tag = rowChild[0].ToString(); treeView_dept.Nodes.Add(childNode); } } } private void txt_dept_MouseClick(object sender, MouseEventArgs e) { treeView_dept.Visible = !treeView_dept.Visible; ctrlDept.loadData(); treeView_dept.Nodes.Clear(); int index = 0; if (CtrlDept.parent.Rows.Count > 0) { foreach (DataRow rowParent in CtrlDept.parent.Rows) { TreeNode parentNode = new TreeNode(); parentNode.Text = rowParent[2].ToString(); parentNode.Tag = rowParent[0].ToString(); treeView_dept.Nodes.Add(parentNode); foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows) { TreeNode childNode = new TreeNode(); childNode.Text = rowChild[2].ToString(); childNode.Tag = rowChild[0].ToString(); treeView_dept.Nodes[index].Nodes.Add(childNode); } index++; } } else { foreach (DataRow rowChild in CtrlDept.children.Tables[index].Rows) { TreeNode childNode = new TreeNode(); childNode.Text = rowChild[2].ToString(); childNode.Tag = rowChild[0].ToString(); treeView_dept.Nodes.Add(childNode); } } } //选择部门 private void treeView_dept_AfterSelect(object sender, TreeViewEventArgs e) { deptId = treeView_dept.SelectedNode.Tag.ToString(); txt_dept.Text = treeView_dept.SelectedNode.Text; treeView_dept.Visible = false; } private void btn_dropNation_Click(object sender, EventArgs e) { comboBox_nation.DroppedDown = true; } private void btn_DropBirth_Click(object sender, EventArgs e) { picker_birthday.Focus(); SendKeys.Send("{F4}"); //模拟按下F4,弹出日期面板 } private void comboBox_nation_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox_nation.SelectedIndex > -1) txt_nation.Text = comboBox_nation.SelectedItem.ToString(); } #endregion #region step2 // 上一步 private void btn_lastStep32_Click(object sender, EventArgs e) { tabControl_Main.SelectedIndex = 0; } // 保存 private void btn_save_Click(object sender, EventArgs e) { if (pic_imageL1.Image == null && pic_imageR1.Image == null) { MessageBox.Show("请先采集虹膜图片!", "提示", MessageBoxButtons.OK); return; } btn_save.Enabled = false; try { byte[] qualifiedIrisBufferL = null; byte[] qualifiedIrisBufferR = null; object irisCodeL = null; object irisCodeR = null; //虹膜匹配查重 DataTable ds = new DataTable(); bool isExist = false; if (iPersonService.GetAllIrisCode(ref ds) == 0) { int iMatchNumber = 0; float iHammingDistance = 1; m_CodeListMgr.CreateList(ds); //加载匹配列表 int height = 0; int width = 0; if (pic_imageL1.Image != null) { qualifiedIrisBufferL = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBufferL, out iHammingDistance, out irisCodeL); if (iMatchNumber != 0) { DialogResult result = MessageBox.Show("已存在此虹膜信息,是否继续保存,将之前的人员信息及虹膜信息覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } else { isExist = true; string personId = m_CodeListMgr.GetUserForIndex(iMatchNumber);//personId iPersonService.deletePersonAndIrisById(Convert.ToInt64(personId)); } } else//编码失败 { if (irisCodeL == null) { return; } } } if (!isExist && pic_imageR1.Image != null) { qualifiedIrisBufferR = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBufferR, out iHammingDistance, out irisCodeR); if (iMatchNumber != 0) { DialogResult result = MessageBox.Show("已存在该虹膜信息,是否继续保存,将之前的人员信息及虹膜信息覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); if (result == DialogResult.No) { return; } else { string personId = m_CodeListMgr.GetUserForIndex(iMatchNumber);//personId iPersonService.deletePersonAndIrisById(Convert.ToInt64(personId)); } } else//编码失败 { if (irisCodeR == null) { return; } } } } else { return; } //基础信息 person.id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0); person.collType = comboBox_collType.SelectedItem.GetHashCode().ToString();//采集类型 person.collTime = DateTime.Now; if (iPersonService.AddPerson(person) != 0) { MessageBox.Show("保存失败,数据库异常!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // 虹膜数据 irisData 在采集结果事件里new irisData.id = BitConverter.ToInt64(Guid.NewGuid().ToByteArray(), 0); irisData.personId = person.id; if (pic_imageL1.Image != null)//左眼虹膜 { irisData.irisL1 = (byte[])irisCodeL; irisData.irisL2 = (byte[])irisCodeL; irisData.imageL1Data = "data:image/bmp;base64," + hmzp_zy.ToString(); irisData.imageL2Data = "data:image/bmp;base64," + hmzp_zy.ToString(); } if (pic_imageR1.Image != null)//右眼虹膜 { irisData.irisR1 = (byte[])irisCodeR; irisData.irisR2 = (byte[])irisCodeR; irisData.imageR1Data = "data:image/bmp;base64," + hmzp_yy.ToString(); irisData.imageR2Data = "data:image/bmp;base64," + hmzp_yy.ToString(); } if (iPersonService.AddIrisData(irisData) != 0) { MessageBox.Show("保存失败,数据库异常!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //语音提示注册成功 //SoundPlayer sound = new SoundPlayer("saveSuccess.wav"); //sound.Play(); DialogResult r = MessageBox.Show("保存成功!" + "\n" + "是否继续添加人员?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (r == DialogResult.No)//跳转到详情页 { //new Thread(new ThreadStart(() => //{ iPersonService.GetDetail(person.id, ref person, ref irisData); insertService.setToFirst(panel_Insert); insertService.SetPanelControl(panel_Insert, "detail"); //})).Start(); panel4.Visible = false; panel_Insert.BringToFront(); } else //跳转到信息采集第一步 { //panel_detail.Visible = false; tabControl_Main.SelectedIndex = 0; panel4.Visible = true; } //清空界面数据 resetStep1(); pic_imageL1.Image = null; pic_imageR1.Image = null; label_qualityL.Text = ""; label_qualityR.Text = ""; btn_save.Enabled = true; initInputItems(); btn_captureForce.Enabled = false; btn_captureIris.Enabled = true; btn_dropCollType.Enabled = true; hmzp_zy = null;//左眼虹膜图片base64编码 hmzp_yy = null;//右眼虹膜图片base64编码 } catch (Exception ex) { //SoundPlayer sound = new SoundPlayer("saveFailure.wav"); //sound.Play(); string msg = "注册失败:" + ex.Message; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); axIrisDevCtrl1.StopCapture(); axIrisDevCtrl1.IrisClose(); } finally { btn_save.Enabled = true; } } // 开始采集 private void btn_captureIris_Click(object sender, EventArgs e) { isCapturing = true; try { if (deviceType == "1") { axIrisDevCtrl1.Visible = false; irisColCtrl1.Visible = true; btn_captureForce.Enabled = false; btn_captureIris.Enabled = false; btn_dropCollType.Enabled = false; txt_collType.Enabled = false; comboBox_collType.Enabled = false; btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2"); String light = "1A"; String strJson = "{\"white_brightness\":\"" + light + "\"}"; if (!devInited) { int result = irisColCtrl1.IrisInit(strJson); if (result == 0) { devInited = true; } else { btn_captureIris.Enabled = true; btn_dropCollType.Enabled = true; txt_collType.Enabled = true; comboBox_collType.Enabled = true; panel_vedioImage.Visible = true; btn_dropCollType.BackColor = Color.White; MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK); return; } } panel_vedioImage.Visible = false; // 初始化数据 label_qualityL.Text = ""; label_qualityR.Text = ""; pic_imageL1.Image = null; pic_imageR1.Image = null; // 开始采集 //new Thread(() => //{ try { irisColCtrl1.Focus(); //irisColCtrl1.setUserName(textBox_name.Text); irisColCtrl1.CaptureEvent -= CaptureEvent; eyeType = comboBox_collType.SelectedItem.GetHashCode().ToString(); strJson = "{\"eyeType\":\"" + eyeType + "\"}"; Thread.Sleep(100); int result1 = irisColCtrl1.StartCapture(strJson); //注册采集事件 if (result1 == 0) irisColCtrl1.CaptureEvent += CaptureEvent; irisColCtrl1.Capture(); } catch (Exception ex) { } //}).Start(); isCaptureForce = false; } else if (deviceType == "2") { axIrisDevCtrl1.Visible = true; irisColCtrl1.Visible = false; btn_captureIris.Enabled = false; btn_captureForce.Enabled = false; btn_dropCollType.Enabled = false; txt_collType.Enabled = false; comboBox_collType.Enabled = false; btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2"); //采集设备初始化 if (devInited == false) { string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}"; int iResult = axIrisDevCtrl1.IrisInit(initText); if (iResult == 0) { devInited = true; } else { axIrisDevCtrl1.IrisClose(); btn_captureIris.Enabled = true; btn_dropCollType.Enabled = true; txt_collType.Enabled = true; comboBox_collType.Enabled = true; panel_vedioImage.Visible = true; btn_dropCollType.BackColor = Color.White; MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK); return; } } panel_vedioImage.Visible = false; // 初始化数据 label_qualityL.Text = ""; label_qualityR.Text = ""; pic_imageL1.Image = null; pic_imageR1.Image = null; // 开始采集 //new Thread(() => //{ try { string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}"; axIrisDevCtrl1.StartCapture(collType); } catch (Exception ex) { } //}).Start(); isCaptureForce = false; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // 强制采集 private void btn_captureForce_Click(object sender, EventArgs e) { isCapturing = true; try { btn_captureIris.Enabled = false; btn_captureForce.Enabled = false; btn_dropCollType.Enabled = false; txt_collType.Enabled = false; comboBox_collType.Enabled = false; btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2"); //采集设备初始化 if (devInited == false) { string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}"; int iResult = axIrisDevCtrl1.IrisInit(initText); if (iResult == 0) { devInited = true; } else { axIrisDevCtrl1.IrisClose(); btn_captureIris.Enabled = true; btn_captureForce.Enabled = true; btn_dropCollType.Enabled = true; txt_collType.Enabled = true; comboBox_collType.Enabled = true; btn_dropCollType.BackColor = Color.White; MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK); return; } } panel_vedioImage.Visible = false; // 初始化数据 label_qualityL.Text = ""; label_qualityR.Text = ""; pic_imageL1.Image = null; pic_imageR1.Image = null; // 启动强制采集 //new Thread(() => //{ try { string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}"; axIrisDevCtrl1.StartCaptureForce(collType); } catch (Exception ex) { } //}).Start(); isCaptureForce = true; } catch (Exception ex) { MessageBox.Show(ex.Message); } } // 重置采集设备 private void btn_resetDev_Click(object sender, EventArgs e) { //axIrisDevCtrl1.StopCapture(); //axIrisDevCtrl1.IrisClose(); //axIrisDevCtrl1.ReSet(); //btn_captureForce.Enabled = false; //btn_captureForce.ForeColor = Color.Black; } // 采集结果事件 private void axIrisDevCtrl1_OnCapture(object sender, AxIrisDevCtrlLib._DIrisDevCtrlEvents_OnCaptureEvent e) { hmzp_zy = null; hmzp_yy = null; isCapturing = false; // 识别验证 if (btn_recognitionClick) { btn_startRecog.Enabled = true; panel_vedioImage.Visible = true; panel_vedioImage.BringToFront(); if (e.result != 0) { MessageBox.Show("采集虹膜图片失败,请重试!"); return; } else { int iMatchNumber = 0; float iHammingDistance = 1; DataTable dt = new DataTable(); if (iPersonService.GetAllIrisCode(ref dt) == 0) { // 加载匹配列表 m_CodeListMgr.CreateList(dt); //加载匹配列表 string s = e.sIrisInfo; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string, object> jsonResult = (Dictionary<string, object>)serializer.DeserializeObject(e.sIrisInfo); jsonResult.TryGetValue("hmzp_zy", out hmzp_zy); jsonResult.TryGetValue("hmzp_yy", out hmzp_yy); object irisCode = new object(); int height, width; //匹配左眼 byte[] qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode); if (iMatchNumber == 0) { // 匹配右眼 qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode); if (iMatchNumber == 0) { label_name.Text = "识别失败,未知人员!"; label_name.ForeColor = Color.OrangeRed; } else { Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId string deptName = ""; Person person = new Person(); iRecognitionService.GetInfoById(personId, ref deptName, ref person); label_name.Text = person.name; label_sex.Text = person.sex == "1" ? "男" : "女"; label_dept.Text = deptName; label_idCardNo.Text = person.idCardNo; label_name.ForeColor = Color.Black; } } else { Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId string deptName = ""; Person person = new Person(); iRecognitionService.GetInfoById(personId, ref deptName, ref person); label_name.Text = person.name; label_sex.Text = person.sex == "1" ? "男" : "女"; label_dept.Text = deptName; label_idCardNo.Text = person.idCardNo; label_name.ForeColor = Color.Black; } } } } // 注册采集 else { panel_vedioImage.Visible = true; panel_vedioImage.BringToFront(); irisData = new IrisData(); irisData.qL1 = "0"; irisData.qR1 = "0"; irisData.qL2 = "0"; irisData.qR2 = "0"; btn_captureIris.Enabled = true; btn_dropCollType.Enabled = true; txt_collType.Enabled = true; comboBox_collType.Enabled = true; btn_dropCollType.BackColor = Color.White; if (isCaptureForce) btn_captureForce.Enabled = true; //btn_captureForce.HoverForeColor = Color.White; if (e.result != 0) { label_qualityL.Text = "质量:<50"; label_qualityR.Text = "质量:<50"; label_qualityL.ForeColor = Color.OrangeRed; label_qualityR.ForeColor = Color.OrangeRed; btn_captureForce.Enabled = true; //语音提示采集失败 //SoundPlayer sound = new SoundPlayer("captureFailure.wav"); //sound.Play(); return; } try { Bitmap bmpL1 = null, bmpR1 = null; int height = 480; int width = 640; object leftIrisCode = new object(); object rightIrisCode = new object(); string s = e.sIrisInfo; JavaScriptSerializer serializer = new JavaScriptSerializer(); Dictionary<string, object> jsonResult = (Dictionary<string, object>)serializer.DeserializeObject(e.sIrisInfo); object flgResult;//0:成功;-1:质量不合格;-2:采集超时;其他:失败; hmzp_zy = null;//左眼虹膜图片base64编码 hmzp_yy = null;//右眼虹膜图片base64编码 object cjtphs = null;//采集图片耗时 object sbxh = null;//设备型号 object sbbh = null;//设备编号 object zy_xxzlpf = null;//左眼图像质量评分 object yy_xxzlpf = null; //右眼图像质量评分 object sbcsdm = null; // 设备厂商代码(信用代码) jsonResult.TryGetValue("flgResult", out flgResult); jsonResult.TryGetValue("hmzp_zy", out hmzp_zy); jsonResult.TryGetValue("hmzp_yy", out hmzp_yy); jsonResult.TryGetValue("cjtphs", out cjtphs); jsonResult.TryGetValue("sbxh", out sbxh); jsonResult.TryGetValue("sbbh", out sbbh); jsonResult.TryGetValue("zy_xxzlpf", out zy_xxzlpf); jsonResult.TryGetValue("yy_xxzlpf", out yy_xxzlpf); jsonResult.TryGetValue("sbcsdm", out sbcsdm); if (flgResult.ToString() == "0") { if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "左眼") { if (hmzp_zy != null && hmzp_zy.ToString() != "") { bmpL1 = Base64StringToImage(hmzp_zy.ToString()); //显示左眼图像 if (bmpL1 != null) { Bitmap tempL1 = new Bitmap(640, 480); Graphics drawL1 = Graphics.FromImage(tempL1); drawL1.DrawImage(bmpL1, 0, 0); pic_imageL1.Image = (Image)tempL1; drawL1.Dispose(); } } else { MessageBox.Show("左眼采集失败!"); return; } } if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "右眼") { if (hmzp_yy != null && hmzp_yy.ToString() != "") { bmpR1 = Base64StringToImage(hmzp_yy.ToString()); //显示右眼图像 if (bmpR1 != null) { //, PixelFormat.Format8bppIndexed Bitmap tempR1 = new Bitmap(640, 480); Graphics drawR1 = Graphics.FromImage(tempR1); drawR1.DrawImage(bmpR1, 0, 0); pic_imageR1.Image = (Image)tempR1; drawR1.Dispose(); } } else { MessageBox.Show("右眼采集失败!"); return; } } string zyQ = ""; string yyQ = ""; //if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = ((double)(Convert.ToDouble(zy_xxzlpf) / 10)).ToString("0.0"); //if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = ((double)(Convert.ToDouble(yy_xxzlpf) / 10)).ToString("0.0"); if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = zy_xxzlpf.ToString(); if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = yy_xxzlpf.ToString(); if (!isCaptureForce) { if (zyQ != "") { label_qualityL.Text = "质量:" + zyQ; label_qualityL.ForeColor = Color.LawnGreen; } if (yyQ != "") { label_qualityR.Text = "质量:" + yyQ; label_qualityR.ForeColor = Color.LawnGreen; } } // 收集数据 irisData.qL1 = zyQ; irisData.qL2 = zyQ; irisData.qR1 = yyQ; irisData.qR2 = yyQ; } else { label_qualityL.Text = "质量:<50"; label_qualityR.Text = "质量:<50"; label_qualityL.ForeColor = Color.OrangeRed; label_qualityR.ForeColor = Color.OrangeRed; btn_captureForce.Enabled = true; } } catch (Exception ex) { MessageBox.Show("虹膜采集错误:" + ex.Message); } } } private void btn_dropCollType_Click(object sender, EventArgs e) { comboBox_collType.DroppedDown = true; } /// <summary> /// 注册采集处理事件 /// </summary> /// <param name="info"></param> public void CaptureEvent(String info) { hmzp_zy = null; hmzp_yy = null; isCapturing = false; ResultParam resJson = JsonConvert.DeserializeObject<ResultParam>(info); //判断是否采集成功 bool captureSuccess = true; if (eyeType == "3") { if (resJson.Hmzp_zy.Contains("左眼") || resJson.Hmzp_yy.Contains("右眼")) { captureSuccess = false; } } else if (eyeType == "2") { if (resJson.Hmzp_zy.Contains("左眼")) { captureSuccess = false; } } else if (eyeType == "1") { if (resJson.Hmzp_yy.Contains("右眼")) { captureSuccess = false; } } // 识别验证 if (btn_recognitionClick) { btn_startRecog.Enabled = true; panel_vedioImage.Visible = true; panel_vedioImage.BringToFront(); //采集结果处理 if (!captureSuccess) { MessageBox.Show("采集虹膜图片失败,请重试!"); return; } else { label_cost.Text = "采集图片耗时:" + resJson.Cjtphs + "ms"; int iMatchNumber = 0; float iHammingDistance = 1; DataTable ds = new DataTable(); // 加载匹配列表 if (iPersonService.GetAllIrisCode(ref ds) == 0) { m_CodeListMgr.CreateList(ds); //加载匹配列表 //获取左右眼图片 hmzp_zy = resJson.Hmzp_zy; hmzp_yy = resJson.Hmzp_yy; object irisCode = new object(); //匹配左眼 int height, width = 0; byte[] qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_zy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode); if (iMatchNumber == 0) { // 匹配右眼 qualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(Base64StringToImage(hmzp_yy.ToString()), out height, out width); iMatchNumber = m_CodeListMgr.MatchOneEye(qualifiedIrisBuffer, out iHammingDistance, out irisCode); if (iMatchNumber == 0) { label_name.Text = "识别失败,未知人员!"; label_name.ForeColor = Color.OrangeRed; } else { Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId string deptName = ""; Person person = new Person(); iRecognitionService.GetInfoById(personId, ref deptName, ref person); label_name.Text = person.name; label_sex.Text = person.sex == "1" ? "男" : "女"; label_dept.Text = deptName; label_idCardNo.Text = person.idCardNo; label_name.ForeColor = Color.Black; } } else { Int64 personId = Convert.ToInt64(m_CodeListMgr.GetUserForIndex(iMatchNumber));//personId string deptName = ""; Person person = new Person(); iRecognitionService.GetInfoById(personId, ref deptName, ref person); label_name.Text = person.name; label_sex.Text = person.sex == "1" ? "男" : "女"; label_dept.Text = deptName; label_idCardNo.Text = person.idCardNo; label_name.ForeColor = Color.Black; } } } } // 注册采集 else { panel_vedioImage.Visible = true; panel_vedioImage.BringToFront(); irisData = new IrisData(); irisData.qL1 = "0"; irisData.qR1 = "0"; irisData.qL2 = "0"; irisData.qR2 = "0"; btn_captureIris.Enabled = true; btn_dropCollType.Enabled = true; txt_collType.Enabled = true; comboBox_collType.Enabled = true; btn_dropCollType.BackColor = Color.White; //if (isCaptureForce) btn_captureForce.Enabled = true; //btn_captureForce.HoverForeColor = Color.White; if (!captureSuccess) { label_qualityL.Text = "质量:<50"; label_qualityR.Text = "质量:<50"; label_qualityL.ForeColor = Color.OrangeRed; label_qualityR.ForeColor = Color.OrangeRed; //btn_captureForce.Enabled = true; //语音提示采集失败 //SoundPlayer sound = new SoundPlayer("captureFailure.wav"); //sound.Play(); return; } try { label_cost.Text = "采集图片耗时:" + resJson.Cjtphs + "ms"; Bitmap bmpL1 = null, bmpR1 = null; object flgResult;//0:成功;-1:质量不合格;-2:采集超时;其他:失败; hmzp_zy = null;//左眼虹膜图片base64编码 hmzp_yy = null;//右眼虹膜图片base64编码 object cjtphs = null;//采集图片耗时 object sbxh = null;//设备型号 object sbbh = null;//设备编号 object zy_xxzlpf = null;//左眼图像质量评分 object yy_xxzlpf = null; //右眼图像质量评分 object sbcsdm = null; // 设备厂商代码(信用代码) hmzp_zy = resJson.Hmzp_zy; hmzp_yy = resJson.Hmzp_yy; cjtphs = resJson.Cjtphs; sbxh = resJson.Sbxh; sbbh = resJson.Sbbh; zy_xxzlpf = resJson.Zy_xxzlpf.Substring(0, 4); yy_xxzlpf = resJson.Yy_xxzlpf.Substring(0, 4); sbcsdm = resJson.Sbcsdm; if (captureSuccess) { if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "左眼") { if (hmzp_zy != null && hmzp_zy.ToString() != "") { bmpL1 = Base64StringToImage(hmzp_zy.ToString()); //显示左眼图像 if (bmpL1 != null) { Bitmap tempL1 = new Bitmap(640, 480); Graphics drawL1 = Graphics.FromImage(tempL1); drawL1.DrawImage(bmpL1, 0, 0); pic_imageL1.Image = (Image)tempL1; drawL1.Dispose(); } //编码 //Image img = bmpL1; //byte[] LQualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(img, out height, out width); //iResultL1 = m_iCamIrisClass.CreateLongIrisCode(LQualifiedIrisBuffer, out leftIrisCode1); //if (iResultL1 != 0) //{ // MessageBox.Show("左眼编码失败!"); // return; //} } else { MessageBox.Show("左眼采集失败!"); return; } } if (comboBox_collType.Text == "双眼" || comboBox_collType.Text == "右眼") { if (hmzp_yy != null && hmzp_yy.ToString() != "") { bmpR1 = Base64StringToImage(hmzp_yy.ToString()); //显示右眼图像 if (bmpR1 != null) { //, PixelFormat.Format8bppIndexed Bitmap tempR1 = new Bitmap(640, 480); Graphics drawR1 = Graphics.FromImage(tempR1); drawR1.DrawImage(bmpR1, 0, 0); pic_imageR1.Image = (Image)tempR1; drawR1.Dispose(); } //Image img = bmpR1; //byte[] RQualifiedIrisBuffer = BitmapFactory.ImageToRaw8BitByteArray(img, out height, out width); //iResultR1 = m_iCamIrisClass.CreateLongIrisCode(RQualifiedIrisBuffer, out rightIrisCode1); //if (iResultR1 != 0) //{ // MessageBox.Show("右眼编码失败!"); // return; //} } else { MessageBox.Show("右眼采集失败!"); return; } } string zyQ = ""; string yyQ = ""; //if (zy_xxzlpf != null && zy_xxzlpf.ToString() != "0") zyQ = ((double)(Convert.ToDouble(zy_xxzlpf) / 10)).ToString("0.0"); //if (yy_xxzlpf != null && yy_xxzlpf.ToString() != "0") yyQ = ((double)(Convert.ToDouble(yy_xxzlpf) / 10)).ToString("0.0"); if (!zy_xxzlpf.ToString().Contains("左眼") && zy_xxzlpf.ToString() != "0") zyQ = zy_xxzlpf.ToString(); if (!yy_xxzlpf.ToString().Contains("右眼") && yy_xxzlpf.ToString() != "0") yyQ = yy_xxzlpf.ToString(); if (!isCaptureForce) { if (zyQ != "") { label_qualityL.Text = "质量:" + zyQ; label_qualityL.ForeColor = Color.LawnGreen; } if (yyQ != "") { label_qualityR.Text = "质量:" + yyQ; label_qualityR.ForeColor = Color.LawnGreen; } } // 收集数据 irisData.qL1 = zyQ; irisData.qL2 = zyQ; irisData.qR1 = yyQ; irisData.qR2 = yyQ; } else { label_qualityL.Text = "质量:<50"; label_qualityR.Text = "质量:<50"; label_qualityL.ForeColor = Color.OrangeRed; label_qualityR.ForeColor = Color.OrangeRed; btn_captureForce.Enabled = true; } } catch (Exception ex) { MessageBox.Show("虹膜采集错误:" + ex.Message); } } } #endregion #region 识别验证 private void btn_startRecog_Click(object sender, EventArgs e) { label_name.Text = ""; label_dept.Text = ""; label_idCardNo.Text = ""; label_sex.Text = ""; btn_startRecog.Enabled = false; try { if (deviceType == "1") { axIrisDevCtrl1.Visible = false; irisColCtrl1.Visible = true; btn_dropCollType.BackColor = ColorTranslator.FromHtml("#ECEEF2"); string light = "1A"; string strJson = "{\"white_brightness\":\"" + light + "\"}"; if (!devInited) { int result = irisColCtrl1.IrisInit(strJson); if (result == 0) { devInited = true; } else { btn_startRecog.Enabled = true; MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK); return; } } panel_vedioImage.Visible = false; // 初始化数据 label_qualityL.Text = ""; label_qualityR.Text = ""; pic_imageL1.Image = null; pic_imageR1.Image = null; // 开始采集 //new Thread(() => //{ try { irisColCtrl1.Focus(); //irisColCtrl1.setUserName(textBox_name.Text); irisColCtrl1.CaptureEvent -= CaptureEvent; eyeType = comboBox_collType.SelectedItem.GetHashCode().ToString(); strJson = "{\"eyeType\":\"" + eyeType + "\"}"; Thread.Sleep(100); int result1 = irisColCtrl1.StartCapture(strJson); //注册采集事件 if (result1 == 0) irisColCtrl1.CaptureEvent += CaptureEvent; irisColCtrl1.Capture(); } catch (Exception ex) { } //}).Start(); isCaptureForce = false; } else if (deviceType == "2") { axIrisDevCtrl1.Visible = true; irisColCtrl1.Visible = false; //采集设备初始化 if (devInited == false) { string initText = "{\"log\":\"0\",\"white_brightness\":\"240\"}"; int iResult = axIrisDevCtrl1.IrisInit(initText); if (iResult == 0) { devInited = true; panel_vedioImage.Visible = false; } else { axIrisDevCtrl1.IrisClose(); btn_startRecog.Enabled = true; MessageBox.Show("采集设备启动失败,请重试!", "错误", MessageBoxButtons.OK); return; } } panel_vedioImage.Visible = false; // 开始采集 //new Thread(() => //{ try { string collType = "{\"eyeType\":\"" + comboBox_collType.SelectedItem.GetHashCode().ToString() + "\"}"; axIrisDevCtrl1.StartCapture(collType); } catch (Exception ex) { } //}).Start(); isCaptureForce = false; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion #region 主页事件 #region 信息采集 private void click1() { if (btn_startRecog.Enabled == false) { MessageBox.Show("正在进行识别验证,无法离开当前界面!"); return; } btn_collectInfoClick = true; btn_collectListClick = false; btn_settinClick = false; btn_recognitionClick = false; btn_writeDataClick = false; btn_collectInfo.BringToFront(); btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2"); btn_collectList.Back = Color.Transparent; btn_setting.Back = Color.Transparent; btn_recognition.Back = Color.Transparent; insertService.setToLast(panel_Insert); panel4.Visible = true; //panel_detail.Visible = false; resetStep1(); // 重置第一步 resetStep3(); // 重置第三步 tabControl_Main.SelectedIndex = 0;//显示第一步 initInputItems();//初始化部分输入框的值 treeView_dept.Visible = false; } private void show1() { if (!btn_collectInfoClick) { btn_collectInfo.Back = ColorTranslator.FromHtml("#56a3f2"); } } private void hide1() { if (!btn_collectInfoClick) btn_collectInfo.Back = Color.Transparent; } private void btn_collectInfo_MouseClick(object sender, MouseEventArgs e) { click1(); } private void pic_collInfo_MouseClick(object sender, MouseEventArgs e) { click1(); } private void label_collInfo_Click(object sender, EventArgs e) { click1(); } private void label_collInfo_MouseClick(object sender, MouseEventArgs e) { click1(); } private void btn_collectInfo_MouseHover(object sender, EventArgs e) { show1(); } private void btn_collectInfo_MouseLeave(object sender, EventArgs e) { hide1(); } private void pic_collInfo_MouseHover(object sender, EventArgs e) { show1(); } private void pic_collInfo_MouseLeave(object sender, EventArgs e) { hide1(); } private void label_collInfo_MouseHover(object sender, EventArgs e) { show1(); } private void label_collInfo_MouseLeave(object sender, EventArgs e) { hide1(); } # endregion #region 采集列表 private void click2() { if (btn_startRecog.Enabled == false) { MessageBox.Show("正在进行识别验证,无法离开当前界面!"); return; } if (isCapturing) { MessageBox.Show("正在采集虹膜图片,无法离开当前界面!"); return; } if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "") { DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (r == DialogResult.No) { return; } } resetStep1(); btn_captureIris.Enabled = true; if (deviceType == "2") btn_captureForce.Enabled = true; panel_vedioImage.Visible = true; btn_collectInfoClick = false; btn_collectListClick = true; btn_settinClick = false; btn_recognitionClick = false; btn_writeDataClick = false; btn_collectList.BringToFront(); btn_collectInfo.Back = Color.Transparent; btn_collectList.Back = ColorTranslator.FromHtml("#56a3f2"); btn_setting.Back = Color.Transparent; btn_recognition.Back = Color.Transparent; insertService.setToFirst(panel_Insert); insertService.SetPanelControl(panel_Insert, "collect"); IOM_cs.insertForm.collection.CtrlCollectionFrom.ctrlCollectionFrom.dataGridView1.ClearSelection(); } private void show2() { if (!btn_collectListClick) { btn_collectList.Back = ColorTranslator.FromHtml("#56a3f2"); } } private void hide2() { if (!btn_collectListClick) btn_collectList.Back = Color.Transparent; } private void btn_collectList_MouseClick(object sender, MouseEventArgs e) { click2(); } private void pic_collList_MouseClick(object sender, MouseEventArgs e) { click2(); } private void label_collList_MouseClick(object sender, MouseEventArgs e) { click2(); } private void btn_collectList_MouseHover(object sender, EventArgs e) { show2(); } private void btn_collectList_MouseLeave(object sender, EventArgs e) { hide2(); } private void pic_collList_MouseHover(object sender, EventArgs e) { show2(); } private void pic_collList_MouseLeave(object sender, EventArgs e) { hide2(); } private void label_collList_MouseHover(object sender, EventArgs e) { show2(); } private void label_collList_MouseLeave(object sender, EventArgs e) { hide2(); } #endregion #region 系统设置 private void click3() { //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); if (btn_startRecog.Enabled == false) { MessageBox.Show("正在进行识别验证,无法离开当前界面!"); return; } if (isCapturing) { MessageBox.Show("正在采集虹膜图片,无法离开当前界面!"); return; } if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "") { DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (r == DialogResult.No) { return; } } resetStep1(); btn_captureIris.Enabled = true; if (deviceType == "2") btn_captureForce.Enabled = true; panel_vedioImage.Visible = true; btn_collectInfoClick = false; btn_collectListClick = false; btn_settinClick = true; btn_recognitionClick = false; btn_writeDataClick = false; btn_setting.BringToFront(); btn_collectInfo.Back = Color.Transparent; btn_collectList.Back = Color.Transparent; btn_setting.Back = ColorTranslator.FromHtml("#56a3f2"); btn_recognition.Back = Color.Transparent; insertService.setToFirst(panel_Insert); insertService.SetPanelControl(panel_Insert, "sys"); } private void show3() { if (!btn_settinClick) btn_setting.Back = ColorTranslator.FromHtml("#56a3f2"); } private void hide3() { if (!btn_settinClick) btn_setting.Back = Color.Transparent; } private void btn_setting_MouseClick(object sender, MouseEventArgs e) { click3(); } private void pic_setting_MouseClick(object sender, MouseEventArgs e) { click3(); } private void label_setting_MouseClick(object sender, MouseEventArgs e) { click3(); } private void btn_setting_MouseHover(object sender, EventArgs e) { show3(); } private void btn_setting_MouseLeave(object sender, EventArgs e) { hide3(); } private void pic_setting_MouseHover(object sender, EventArgs e) { show3(); } private void pic_setting_MouseLeave(object sender, EventArgs e) { hide3(); } private void label_setting_MouseHover(object sender, EventArgs e) { show3(); } private void label_setting_MouseLeave(object sender, EventArgs e) { hide3(); } #endregion #region 识别验证 private void click4() { //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); if (isCapturing) { MessageBox.Show("正在采集虹膜图片,无法离开当前界面!"); return; } if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "") { DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (r == DialogResult.No) { return; } } resetStep1(); btn_captureIris.Enabled = true; if(!devInited) panel_vedioImage.Visible = true; btn_collectInfoClick = false; btn_collectListClick = false; btn_settinClick = false; btn_recognitionClick = true; btn_writeDataClick = false; btn_recognition.BringToFront(); btn_collectInfo.Back = Color.Transparent; btn_setting.Back = Color.Transparent; btn_collectList.Back = Color.Transparent; btn_recognition.Back = ColorTranslator.FromHtml("#56a3f2"); insertService.setToLast(panel_Insert); panel4.Visible = true; //panel_detail.Visible = false; tabControl_Main.SelectedIndex = 1;//显示第三步 label_name.Text = ""; label_sex.Text = ""; label_dept.Text = ""; label_idCardNo.Text = ""; panel_btn.Visible = true; panel_result.Visible = true; btn_save.Visible = false; btn_lastStep32.Visible = false; } private void show4() { if (!btn_recognitionClick) btn_recognition.Back = ColorTranslator.FromHtml("#56a3f2"); } private void hide4() { if (!btn_recognitionClick) btn_recognition.Back = Color.Transparent; } private void btn_recognition_MouseClick(object sender, MouseEventArgs e) { click4(); } private void pic_recognition_MouseClick(object sender, MouseEventArgs e) { click4(); } private void label_recognition_MouseClick(object sender, MouseEventArgs e) { click4(); } private void btn_recognition_MouseHover(object sender, EventArgs e) { show4(); } private void btn_recognition_MouseLeave(object sender, EventArgs e) { hide4(); } private void pic_recognition_MouseHover(object sender, EventArgs e) { show4(); } private void pic_recognition_MouseLeave(object sender, EventArgs e) { hide4(); } private void label_recognition_MouseHover(object sender, EventArgs e) { show4(); } private void label_recognition_MouseLeave(object sender, EventArgs e) { hide4(); } #endregion #region 数据写入 private void click5() { //pic_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); //label_sysSetting.BackColor = ColorTranslator.FromHtml("#56a3f2"); if (isCapturing) { MessageBox.Show("正在采集虹膜图片,无法离开当前界面!"); return; } if (txt_name.Text != "" || txt_IDCardNo.Text != "" || txt_staffNo.Text != "" || txt_dept.Text.Trim() != "") { DialogResult r = MessageBox.Show("录入的信息还未保存,一旦离开将清空,确认离开当前页?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (r == DialogResult.No) { return; } } resetStep1(); btn_captureIris.Enabled = true; if (!devInited) panel_vedioImage.Visible = true; btn_collectInfoClick = false; btn_collectListClick = false; btn_settinClick = false; btn_recognitionClick = false; btn_writeDataClick = true; btn_writeData.BringToFront(); btn_collectInfo.Back = Color.Transparent; btn_setting.Back = Color.Transparent; btn_collectList.Back = Color.Transparent; btn_recognition.Back = Color.Transparent; btn_writeData.Back = ColorTranslator.FromHtml("#56a3f2"); insertService.setToFirst(panel_Insert); insertService.SetPanelControl(panel_Insert, "writeData"); } private void show5() { if (!btn_writeDataClick) btn_writeData.Back = ColorTranslator.FromHtml("#56a3f2"); } private void hide5() { if (!btn_writeDataClick) btn_writeData.Back = Color.Transparent; } private void btn_writeData_MouseClick(object sender, MouseEventArgs e) { click5(); } private void btn_writeData_MouseHover(object sender, EventArgs e) { show5(); } private void btn_writeData_MouseLeave(object sender, EventArgs e) { hide5(); } private void pic_writeData_MouseClick(object sender, MouseEventArgs e) { click5(); } private void pic_writeData_MouseHover(object sender, EventArgs e) { show5(); } private void pic_writeData_MouseLeave(object sender, EventArgs e) { hide5(); } private void label_writeData_MouseClick(object sender, MouseEventArgs e) { click5(); } private void label_writeData_MouseHover(object sender, EventArgs e) { show5(); } private void label_writeData_MouseLeave(object sender, EventArgs e) { hide5(); } #endregion #region 按钮 //修改密码 private void btn_editPassword_Click(object sender, EventArgs e) { IOM_cs.insertForm.sysSetting.EditPassWord editPassword = new IOM_cs.insertForm.sysSetting.EditPassWord(FormLogin.user); editPassword.Show(); } private void btn_editPassword_MouseHover(object sender, EventArgs e) { label_tip1.Visible = true; } private void btn_editPassword_MouseLeave(object sender, EventArgs e) { label_tip1.Visible = false; } // 退出登录 private void btn_logout_Click(object sender, EventArgs e) { Process.Start(Application.ExecutablePath); Application.Exit(); } private void btn_logout_MouseHover(object sender, EventArgs e) { label_tip2.Visible = true; } private void btn_logout_MouseLeave(object sender, EventArgs e) { label_tip2.Visible = false; } // 最小化 private void btn_min_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; //最小化 } private void btn_min_MouseHover(object sender, EventArgs e) { label_tip3.Visible = true; } private void btn_min_MouseLeave(object sender, EventArgs e) { label_tip3.Visible = false; } // 关闭软件 private void btn_close_Click(object sender, EventArgs e) { Close(); } private void Form1_FormClosing(object sender, FormClosingEventArgs ev) { try { //SDT_ClosePort(1001); try { string[] dirs = Directory.GetFiles(System.Windows.Forms.Application.StartupPath, "*.bmp"); foreach (string dir in dirs) { File.Delete(dir); } } catch (Exception ex) { } FormLogin.formLogin.Close(); Environment.Exit(0); string msg = "注册界面正常关闭!"; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); } catch (Exception ex) { string msg = "注册界面去初始化出错:" + ex.Message; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); } } private void btn_close_MouseHover(object sender, EventArgs e) { label_tip4.Visible = true; } private void btn_close_MouseLeave(object sender, EventArgs e) { label_tip4.Visible = false; } #endregion #region 窗体拖动 // 窗体拖动 private void panel_title_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { mouseOff = new Point(-e.X, -e.Y); //得到变量的值 leftFlag = true; //点击左键按下时标注为true; } } // 窗体拖动 private void panel_title_MouseMove(object sender, MouseEventArgs e) { if (leftFlag) { Point mouseSet = Control.MousePosition; mouseSet.Offset(mouseOff.X, mouseOff.Y); //设置移动后的位置 Location = mouseSet; } } // 窗体拖动 private void panel_title_MouseUp(object sender, MouseEventArgs e) { if (leftFlag) { leftFlag = false;//释放鼠标后标注为false; } } #endregion #endregion #region tool /// <summary> /// base64编码的文本转为图片 /// </summary> public Bitmap Base64StringToImage(string basestr) { Bitmap bitmap = null; try { String inputStr = basestr; byte[] arr = Convert.FromBase64String(inputStr); MemoryStream ms = new MemoryStream(arr); Bitmap bmp = new Bitmap(ms); ms.Close(); ms.Dispose(); bitmap = bmp; } catch (Exception ex) { //MessageBox.Show("Base64StringToImage 转换失败\nException:" + ex.Message); } return bitmap; } //计算年龄 private string countAge(DateTime birthday) { string ageS = ""; if (null != birthday) { DateTime now = DateTime.Now; int age = now.Year - birthday.Year; //再考虑月、天的因素 if (now.Month < birthday.Month || (now.Month == birthday.Month && now.Day < birthday.Day)) { age--; } ageS = age.ToString(); } return ageS; } #endregion private void tabPage1_Click(object sender, EventArgs e) { if (treeView_dept.Visible == true) treeView_dept.Visible = false; } private void txt_dept_Leave(object sender, EventArgs e) { treeView_dept.Visible = false; } private void treeView_dept_Leave(object sender, EventArgs e) { treeView_dept.Visible = false; } private void comboBox_collType_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox_collType.SelectedIndex > -1) txt_collType.Text = comboBox_collType.SelectedItem.ToString(); } // 解决控件加载花屏问题 //protected override CreateParams CreateParams //{ // get // { // var parms = base.CreateParams; // parms.Style &= ~0x02000000; // return parms; // } //} //protected override CreateParams CreateParams //{ // get // { // CreateParams cp = base.CreateParams; // cp.ExStyle |= 0x02000000; // return cp; // } //} } }