/// <summary> /// 切换运行状态 /// </summary> public void btnRun_Click(object sender, EventArgs e) { int cameraCount = IniStatus.Instance.CamearCount; Dictionary <int, CameraBase> cameraDic = CameraManger.CameraDic; try { if (CommHandle.Instance.IsLink == false) { /*StatusManger status = StatusManger.Instance; * if (status.RuningStatus == RuningStatus.系统异常) * { * MessageBox.Show("系统出现异常,请检查设置", "提示", * MessageBoxButtons.OK, MessageBoxIcon.Error); * return; * }*/ if (CameraManger.CameraDic.Count > 0) { CameraManger.Close(); } if (CameraManger.Open() == false) { MessageBox.Show("没有相机连接,无法启动", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } for (int i = 0; i < cameraCount; i++) { if (cameraDic.ContainsKey(i + 1) == false) { //Util.Notify(string.Format("请注意相机{0}未连接", i+1)); MessageHelper.ShowError(string.Format("相机{0}没有找到", i + 1)); } } foreach (int key in cameraDic.Keys) { if (key > cameraCount || key < 1) { cameraDic.Remove(key); Util.Notify(Level.Err, $"相机{key}名称ID超出相机个数设定范围,请用相机软件重新设定"); return; } } Util.Notify("相机打开完成"); foreach (var item in ToolsFactory.ToolsDic.Values) { Tools.CreateImage.CreateImageTool createImageTool = item[0] as Tools.CreateImage.CreateImageTool; createImageTool.OffLineMode = false; } LoadProject(false); CommHandle.Instance.CommunicationParam = UserSetting.Instance.MainDeviceComParam; //两对象同是CommunicationParam类型。 CommHandle.Instance.Open(); } else { if (MessageBox.Show("确定中止运行吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { CommHandle.Instance.IsLink = false; foreach (var item in CameraManger.CameraDic.Values) { item.ContinuousShotStop(); if (item.IsContinuousShot) { item.ContinuousShotStop(); } } } } } catch (Exception) { } }
/// <summary> /// 打开相机,加载工程文件,通信参数设定,打开通讯。 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void FrmMain_Load(object sender, EventArgs e) { //Common.UI.FrmLoad frmLoad = new Common.UI.FrmLoad(Application.StartupPath + @"\Res\Loading\"); //Common.UI.Parameter.Name = frmAbout.AssemblyProduct; //Common.UI.Parameter.Year = DateTime.Now.ToString("yyyy"); //Common.UI.Parameter.Version = frmAbout.AssemblyVersion; //Common.UI.Parameter.CopyRight = frmAbout.AssemblyCopyright; //Common.UI.Parameter.CompanyName = frmAbout.AssemblyCompany; //Common.UI.Parameter.Status = "初始化中..."; //Common.UI.Parameter.StatusNum = 0; //frmLoad.Show(); //frmLoad.UpdateProgress("相机加载...", 0, 30, 500); //frmWait.AsyncMethod += ((obj, args) => { //注册认证 #if !DEBUG //string key = ""; //key = Common.RegisterHelper.getMNum(); // if (UserSetting.Instance.SoftKey == null || UserSetting.Instance.SoftKey != key) //{ // if (UserSetting.Instance.SoftKey == null) // { // MessageBox.Show("验证码错误", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); // // Common.Util.Notify("验证码错误"); // } // else // { // // MessageBox.Show(str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); // } // frmRegistered registered = new frmRegistered(); // registered.ShowDialog(); //} //if (UserSetting.Instance.SoftKey == null || UserSetting.Instance.SoftKey != key) //{ // // 终止此进程并为基础操作系统提供指定的退出代码。 // System.Environment.Exit(1); //} #endif bool isCameraOpenSuccess = false; try { //打开相机 if (CameraManger.Open()) { int cameraCount = IniStatus.Instance.CamearCount; Dictionary <int, CameraBase> cameraDic = CameraManger.CameraDic; for (int i = 0; i < cameraCount; i++) { if (cameraDic.ContainsKey(i + 1) == false) { MessageHelper.ShowError(string.Format("相机{0}没有找到", i + 1)); } } //查询相机名称是不是超出有效范围,如果超出,将其从字典中清除。 foreach (int key in cameraDic.Keys) { if (key > cameraCount || key < 1) { //cameraDic.Remove(key); Util.Notify(Level.Err, $"相机{key}已连接,但其名称ID超出相机个数设定范围,请通过相机软件修改"); } } isCameraOpenSuccess = true; Util.Notify("相机打开完成"); } else { StatusManger.Instance.RuningStatus = RuningStatus.系统异常; Util.Notify(Level.Err, "相机打开失败"); } } catch (Exception) { MessageHelper.ShowError("相机打开出现异常"); StatusManger.Instance.RuningStatus = RuningStatus.系统异常; Util.Notify(Level.Err, "相机打开出现异常"); } //加载工程文件 autoUnit.LoadProject(true); //放在此位置很重要,不能像以前一样放在最后。 try { //通信参数设定 CommHandle.Instance.CommunicationParam = UserSetting.Instance.MainDeviceComParam; //两对象同是CommunicationParam类型。 //打开通讯 if (isCameraOpenSuccess) { CommHandle.Instance.Open(); } } catch (Exception) { StatusManger.Instance.RuningStatus = RuningStatus.系统异常; Util.Notify(Level.Err, "通信端口打开异常"); } this.WindowState = FormWindowState.Maximized; } }