using irisHelper; using irisRefactor.FrmService; using irisRefactor.IrisCamera; using irisRefactor.IrisScoket; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading; namespace irisRefactor.IrisThread { public class IdentiyfTh { private static IdentiyfTh _identiyfTh = null; private IdentiyfTh() { } public static IdentiyfTh GetInstance() { if (_identiyfTh == null) _identiyfTh = new IdentiyfTh(); return _identiyfTh; } public void Identify() { LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, "Identify"); ProMemory.irisConfig.IdentifyAccess = true; try { int iMatchNumber = 0; float iHammingDistance = 1; int iLeftRight = 0; while (ProMemory.irisConfig.IdentifyThreadRun == true && iMatchNumber == 0 && ProMemory.Tag_IdentifyTimer == 0 && !ProMemory.goingToCloseForm&&!ProMemory.isSyning) { if (ProMemory.irisConfig.Q4.Count > 0) { lock (ProMemory.irisConfig.Q4) { if (ProMemory.irisConfig.Q4.Count > 0) { ProMemory.irisConfig.QualifiedIrisBuffer = ProMemory.irisConfig.Q4.Pop(); } } if (ProMemory.irisConfig.QualifiedIrisBuffer != null) { //加载匹配列表 iMatchNumber = ProMemory.proConfig.CodeListMgr.MatchOneEye(ProMemory.irisConfig.QualifiedIrisBuffer, out iHammingDistance, out iLeftRight); } } } ProMemory.timer2.Dispose();//停止计时器 //跳出循环,条件是时间到、匹配成功或者正在关闭程序 ProMemory.irisConfig.AssessThreadRun = false; ProMemory.irisConfig.EyeFinderThreadRun = false; if(ProMemory.appConfig.AuthConfig.HasTempDtAuthority) ProMemory.tempRegion = Form1.GetInstance().obtainTemp(); //匹配成功 if (iMatchNumber > 0) { string personId = ProMemory.proConfig.CodeListMgr.GetUserForIndex(iMatchNumber);//personId if (ProMemory.formType == "1") Form1.GetInstance().Success(personId); else if (ProMemory.formType == "2") Form2.GetInstance().Success(personId); //int time = Convert.ToInt32(ConfigHelper.GetAppConfig("showTimeSuccess")); Thread.Sleep(ProMemory.appConfig.ShowTimeSuccess); } //匹配失败 else { LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, "未知人员温度:" + ProMemory.tempString); if (ProMemory.formType == "1") Form1.GetInstance().failure(); else if (ProMemory.formType == "2") Form2.GetInstance().failure(); //int time2 = Convert.ToInt32(ConfigHelper.GetAppConfig("showTimeFailure")); Thread.Sleep(ProMemory.appConfig.ShowTimeFailure); } ProMemory.cameraController.ContinuousShot_TriggerOff(); } catch (Exception ex) { string msg = "虹膜匹配线程CatchError:" + ex; LogHelper.WriteLog(MethodBase.GetCurrentMethod().DeclaringType, msg); } } } }