using fingerPrint; using irisDataBase; using irisDataBase.Service; using irisDataBase.Service.mysqlImpl; using IrisDoor; using irisHelper; using irisIoControll; using irisIoControll.Service; using irisMemory; using irisRefactor.fingerThread; using irisRefactor.FrmService; using irisRefactor.IrisCamera; using irisRefactor.IrisScoket; using irisRefactor.IrisThread; using MvCamCtrl.NET; using System; using System.Data; using System.IO; using System.Net; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Windows.Forms; using System.Xml.Linq; namespace irisRefactor { public class ProMemory { public static String formType; public static ProConfig proConfig; public static AppConfig appConfig; public static IrisConfig irisConfig; public static IdentifyConfig identifyConfig; public static IoControllService IoControllService = (IoControllService)IrisIoControllObject.getEntity(); public static IrisDataService irisDataService = (IrisDataService)IrisDataBaseObject.getEntity("IrisDataService"); public static FingerDataService fingerDataService = (FingerDataService)IrisDataBaseObject.getEntity("FingerDataService"); public static IrisPersonViewService irisPersonViewService = (IrisPersonViewService)IrisDataBaseObject.getEntity("IrisPersonView"); public static IrisRecordsService irisRecordsService = (IrisRecordsService)IrisDataBaseObject.getEntity("IrisRecords"); public static IrisSynchDataService irisSynchDataService=(IrisSynchDataService)IrisDataBaseObject.getEntity("IrisSynchData"); public static IrisPermisionService irisPermisionService = (IrisPermisionService)IrisDataBaseObject.getEntity("IrisPermision"); public static IrisDeviceService irisDeviceService = (IrisDeviceService)IrisDataBaseObject.getEntity("IrisDevice"); public static bool goingToCloseForm = false; /*是否正在关闭程序标志*/ public static bool m_bGrabbing = false; /*是否正在拍摄标志*/ //public static int Tag_SleepTimer = 0; //public static int Tag_IdentifyTimer = 0; public static bool isSyning = false; public static bool jobRuning = false; public static bool isWait = false;//是否待机 public static bool findingEyes = false;//开始找眼标记 public static string hostIp = ""; public static MyCamera.cbOutputdelegate ImageCallback; public static MyCamera.cbExceptiondelegate CallBackFunc; public static MyCamera.MV_CC_DEVICE_INFO_LIST m_pDeviceList; /*采集图像*/ public static System.Windows.Forms.Timer timerCamera; // public static System.Threading.Timer timer1; // public static System.Threading.Timer timer2; public static CameraController cameraController; public static FingerPrintModule fingerPrintModule; /// <summary> /// ////// /// </summary> public static int tempRegion; //温度区间1-温度过低,2-体温正常,3-体温异常,4-温度过高 //public static String tempString; public static bool isSleeping = false; [DllImport("User32.dll")] static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int Iparam); const int WM_CLOSE = 0X0010; [DllImport("CaptureEye_Rec.dll", EntryPoint = "CaptureEye_Rec")] public static extern unsafe int CaptureEye_Rec(IntPtr Data, ref int* pos); [DllImport("AssessFocus_RecSY.dll", EntryPoint = "AssessFocus_Rec")] public static extern unsafe int AssessFocus_Rec(IntPtr Data, int[] Pos, ref byte* irisImage, ref byte* irisImage2); public static StringBuilder stringBuilder = new StringBuilder(); public static StringBuilder tempString = new StringBuilder(); /// <summary> /// 注意初始不要涉及数据库 /// </summary> public static void InitProMemory() { try { formType = ConfigHelper.GetAppConfig("formType"); proConfig = ProConfig.GetInstance(); appConfig = AppConfig.GetInstance(); irisConfig = IrisConfig.GetInstance(); identifyConfig = IdentifyConfig.GetInstance; //GetHostIPv4(); hostIp = ConfigHelper.GetAppConfig("hostIp"); //嵌入式电脑I/O口初始化 IoControllService.initIO(); // 相机控制 cameraController = CameraController.GetInstance(); //检测并连接相机 proConfig.PDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST(); timerCamera = new System.Windows.Forms.Timer(); timerCamera.Tick += new EventHandler(cameraController.TimerCamera_Tick); timerCamera.Interval = 3000; // 延时3000ms执行 timerCamera.Start(); //初始化门禁,若有权限链接串口 DoorSystem doorSystem = new DoorSystem(); // 初始化指纹识别模块 if (ConfigHelper.GetAppConfig("fingerEnable") == "true") { fingerPrintModule = new FingerPrintModule(); int ret = fingerPrintModule.ConnectDeivce(); if (ret == 0) { LogHelper.WriteInfoLog(MethodBase.GetCurrentMethod().DeclaringType, "指纹模块连接成功"); } else { LogHelper.WriteErrorLog(MethodBase.GetCurrentMethod().DeclaringType, "指纹模块连接失败"); } } //数据库链接 Thread connectServerThread = new Thread(ConnectDatabase); connectServerThread.Start(); } catch (Exception ex) { LogHelper.WriteErrorLog(MethodBase.GetCurrentMethod().DeclaringType, ex.Message); } } private static void ConnectDatabase() { if (DatabaseLocal.OpenDB(appConfig.DbLocalConfig) == 0) { string msg = "本地数据库连接成功"; LogHelper.WriteInfoLog(MethodBase.GetCurrentMethod().DeclaringType, msg); proConfig.CodeListMgr = new IrisCodeListMgr(); //匹配列表初始化 proConfig.CodeListMgr.CreateList(irisDataService.getAllIrisCodeLocal());//加载匹配列表 // 指纹数据库在保存在内存中 应用重启后需要重新初始化数据库并添加指纹模板数据 fingerPrintModule.FingerPrintZkMgr.CreateList(fingerDataService.GetAllFingerTemplateLocal()); int count = fingerPrintModule.SetFingerTemplate(fingerPrintModule.FingerPrintZkMgr.UserFingerList); if (count >= 0) { LogHelper.WriteInfoLog(MethodBase.GetCurrentMethod().DeclaringType, "初始化指纹模板数据库成功[" + count + "]"); /* byte[] tempData = new byte[1216]; int tempLen = 1216; fingerPrintModule.ReadFileData("d:\\template1-1216.ts", ref tempData, ref tempLen); fingerDataService.InsertFingerData(1, 1210930973838151680, tempData, tempLen); byte[] tempData2 = new byte[902]; int tempLen2 = 902; fingerPrintModule.ReadFileData("d:\\template2-902.ts", ref tempData2, ref tempLen2); fingerDataService.InsertFingerData(2, 1210933614471286784, tempData2, tempLen2); */ } } else { if (ProMemory.appConfig.Language == 1) MessageBox.Show("本地数据库连接失败,程序即将关闭!", "异常", MessageBoxButtons.OK, MessageBoxIcon.Warning); else MessageBox.Show("database connection fialed", "message"); Application.ExitThread(); Application.Exit(); } // 开始监听服务端口 SocketHelper socket = new SocketHelper(); socket.start(); // 开始指纹识别线程 Thread thFingerIdentify = new Thread(FingerIdentifyTh.GetInstance.FingerIdentify) { Name = "FingerIdentifyThread" + DateTime.Now.ToString("[MMddHHmmss]") }; Thread.Sleep(4000); FingerIdentifyTh.GetInstance.CaptureWorking = true; thFingerIdentify.Start(); } public static void Close() { goingToCloseForm = true; irisConfig.IdentifyThreadRun = false; irisConfig.AssessThreadRun = false; irisConfig.EyeFinderThreadRun = false; //cameraController.Grabbing(); cameraController.CloseCamera(); IoControllService.YellowOff(); IoControllService.RedOff(); IoControllService.GreenOff(); DatabaseLocal.CloseDB(); } //获取本机IP private static void GetHostIPv4() { IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName()); if (hostEntry.AddressList.Length > 0) { foreach (IPAddress ipAddr in hostEntry.AddressList) { if (ipAddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { //hostIp = ipAddr.ToString(); String ip = ipAddr.ToString(); if (ip != null && ip != "") ConfigHelper.UpdateAppConfig("hostIp", ip); break; } } } } } }