| | |
| | | |
| | | HTuple ImageHeight = new HTuple(); |
| | | HTuple ImageWidth = new HTuple(); |
| | | |
| | | |
| | | bool isLeftCameraOpen = false; |
| | | bool isRightCameraOpen = false; |
| | | bool isDoorOpen = false; |
| | |
| | | //bool isCylinder2Loosen = false; |
| | | bool isUUTOut = false; |
| | | bool isRealyOK = false; |
| | | |
| | | |
| | | #endregion |
| | | WelcomeUser m_WelcomeForm = new WelcomeUser(); //欢迎界面 |
| | | public frmMain() |
| | |
| | | private void frmMain_Load(object sender, EventArgs e) |
| | | { |
| | | m_WelcomeForm.Show(); //显示欢迎界面 |
| | | // m_WelcomeForm.ProgressBar1.Value = 0; //欢迎界面进度条 |
| | | // m_WelcomeForm.ProgressBar1.Value = 0; //欢迎界面进度条 |
| | | Application.DoEvents(); //处理所有的当前在消息队列中的Windows消息。 |
| | | |
| | | Log.WriteLog("App main form loading"); |
| | |
| | | Log.WriteLog("MapTagToControl Enter"); |
| | | |
| | | opc.itemReadDict[InputTag.X_JinDian].control = lblX_JinDian; |
| | | opc.itemReadDict[InputTag.Z_JinDian].control =lblZ_JinDian; |
| | | opc.itemReadDict[InputTag.X_Alarm].control =lblX_Alarm; |
| | | opc.itemReadDict[InputTag.Z_JinDian].control = lblZ_JinDian; |
| | | opc.itemReadDict[InputTag.X_Alarm].control = lblX_Alarm; |
| | | opc.itemReadDict[InputTag.Z_Alarm].control = lblZ_Alarm; |
| | | opc.itemReadDict[InputTag.X_CW].control = lblX_CW; |
| | | opc.itemReadDict[InputTag.X_CCW].control = lblX_CCW; |
| | | opc.itemReadDict[InputTag.Z_CW].control = lblZ_CW; |
| | | opc.itemReadDict[InputTag.Z_CCW].control =lblZ_CCW; |
| | | opc.itemReadDict[InputTag.Z_CCW].control = lblZ_CCW; |
| | | opc.itemReadDict[InputTag.DingWei_CW].control = lblDingWei_CW; |
| | | opc.itemReadDict[InputTag.DingWei_CCW].control = lblDingWei_CCW; |
| | | opc.itemReadDict[InputTag.DingWei_JinDian].control = lblDingWei_JinDian; |
| | |
| | | opc.itemReadDict[InputTag.E_Stop].control = lblE_Stop; |
| | | opc.itemReadDict[InputTag.SafeCurtain].control = lblSafeCurtain; |
| | | opc.itemReadDict[InputTag.OpenJieJin].control = lblOpenJieJin; |
| | | opc.itemReadDict[InputTag.CeBianQian].control =lblCeBianQian; |
| | | opc.itemReadDict[InputTag.CeBianQian].control = lblCeBianQian; |
| | | opc.itemReadDict[InputTag.CeBianHou].control = lblCeBianHou; |
| | | opc.itemReadDict[InputTag.WuGanQian].control = lblWuGanQian; |
| | | opc.itemReadDict[InputTag.WuGanHou].control = lblWuGanHou; |
| | |
| | | opc.itemWriteDict[OutputTag.ForApple].control = lblForApple; |
| | | opc.itemWriteDict[OutputTag.CameraLighto].control = lblCameraLighto; |
| | | opc.itemWriteDict[OutputTag.WuGanCylider2].control = lblWuGanCylider2; |
| | | |
| | | |
| | | Log.WriteLog("MapTagToControl Leave"); |
| | | } |
| | | |
| | |
| | | config.maxAngle = 121; |
| | | config.pulsePerDegree = 500; |
| | | config.calAngle = 120; |
| | | config.saveImage = true; |
| | | config.saveImage = true; |
| | | sft.SetConfig(configPath, config); |
| | | } |
| | | this.tsplabelProductName.Text = config.title; |
| | |
| | | /// <summary> |
| | | /// 加载相机 |
| | | /// </summary> |
| | | private void initCam_Right() |
| | | private void initCam_Right() |
| | | { |
| | | Log.WriteLog("initCam_Right Enter"); |
| | | |
| | |
| | | |
| | | Log.WriteLog("initCam_Right Leave"); |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 加载HalconTool |
| | |
| | | if (runStatus != RunStatus.continueCapture) |
| | | { |
| | | #region 保存图片 |
| | | string FolderPath = "D:\\Image\\" + DateTime.Now.ToString("yyyyMMdd"); |
| | | string fileName = txtSN.Text.Trim() + "-" + DateTime.Now.ToString("HHmmssffff"); |
| | | if (config.saveImage) |
| | | { |
| | | string FolderPath = "D:\\Image\\" + DateTime.Now.ToString("yyyyMMdd"); |
| | | string fileName = txtSN.Text.Trim() + "-" + DateTime.Now.ToString("HHmmssffff"); |
| | | |
| | | if (!Directory.Exists(FolderPath)) Directory.CreateDirectory(FolderPath); |
| | | cam.SaveImage(FolderPath, fileName); |
| | | if (!Directory.Exists(FolderPath)) Directory.CreateDirectory(FolderPath); |
| | | cam.SaveImage(FolderPath, fileName, string.IsNullOrWhiteSpace(config.saveImageFormat) ? "png" : config.saveImageFormat); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | |
| | | ht.JobImage = recImage.CopyImage(); |
| | | HOperatorSet.GetImageSize(ht.JobImage, out ImageWidth, out ImageHeight); |
| | | ht.JobResults.Clear(); |
| | | |
| | | |
| | | Log.WriteLog("cam_GrabImageDone GrabSuccess run JobLLMF"); |
| | | ht.Run("JobLLMF"); |
| | | |
| | |
| | | if (runStatus_left != RunStatus.continueCapture) |
| | | { |
| | | #region 保存图片 |
| | | string FolderPath = "D:\\Image\\" + DateTime.Now.ToString("yyyyMMdd") + "-left"; |
| | | string fileName = txtSN.Text.Trim() + "-" + DateTime.Now.ToString("HHmmssffff"); |
| | | if (config.saveImage) |
| | | { |
| | | string FolderPath = "D:\\Image\\" + DateTime.Now.ToString("yyyyMMdd") + "-left"; |
| | | string fileName = txtSN.Text.Trim() + "-" + DateTime.Now.ToString("HHmmssffff"); |
| | | |
| | | if (!Directory.Exists(FolderPath)) Directory.CreateDirectory(FolderPath); |
| | | cam_left.SaveImage(FolderPath, fileName); |
| | | if (!Directory.Exists(FolderPath)) Directory.CreateDirectory(FolderPath); |
| | | cam_left.SaveImage(FolderPath, fileName, string.IsNullOrWhiteSpace(config.saveImageFormat) ? "png" : config.saveImageFormat); |
| | | } |
| | | #endregion |
| | | } |
| | | |
| | |
| | | |
| | | this.BeginInvoke(new MethodInvoker(delegate |
| | | { |
| | | Log.WriteLog("resultCreater_ListenEvent UI, data:" + e.IData.Data.ToString()+ ", runStatus:" + runStatus); |
| | | Log.WriteLog("resultCreater_ListenEvent UI, data:" + e.IData.Data.ToString() + ", runStatus:" + runStatus); |
| | | |
| | | string s = e.IData.Data.ToString(); |
| | | if (!s.Equals("JobLLMF_Done")) |
| | |
| | | Log.WriteLog("resultCreater_ListenEvent UI, ShowDisplayAngle angle: " + tmpAngle.ToString()); |
| | | |
| | | ShowDisplayAngle(tmpAngle.ToString("0.00")); |
| | | if(booltemAngle==true) |
| | | if (booltemAngle == true) |
| | | { |
| | | Log.WriteLog("Camera Get The Alignment tmpAangle"+tmpAngle.ToString()); |
| | | |
| | | Log.WriteLog("Camera Get The Alignment tmpAangle" + tmpAngle.ToString()); |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | if (runStatus == RunStatus.calibration) //标定 |
| | | { |
| | |
| | | |
| | | //Janhans 增加界面角度log记载的Flage 变量 booltemAngle |
| | | booltemAngle = true; |
| | | Log.WriteLog("Camera Get The InitAngle "+initAngle.ToString()); |
| | | Log.WriteLog("Camera Get The InitAngle " + initAngle.ToString()); |
| | | } |
| | | if (tmpAngle >= config.minAngle && tmpAngle <= config.maxAngle) |
| | | { |
| | |
| | | sw.Stop(); |
| | | Log.WriteLog("Camera Get The FinalAngle" + finalAngle); |
| | | |
| | | str=sw.ElapsedMilliseconds.ToString(); |
| | | Log.WriteLog("Aangle_Alignment_Time"+str+"ms"); |
| | | str = sw.ElapsedMilliseconds.ToString(); |
| | | Log.WriteLog("Aangle_Alignment_Time" + str + "ms"); |
| | | sw.Restart(); |
| | | Log.WriteLog("resultCreater_ListenEvent UI, opc write OutputTag.Move_OK true begin"); |
| | | opc.Write(OutputTag.Move_OK, true); |
| | | Log.WriteLog("resultCreater_ListenEvent UI, opc write OutputTag.Move_OK true end"); |
| | | |
| | | |
| | | Log.WriteLog("-------角度调整完成,继电器上电, PC给出信号至Macmin-----"); |
| | | Log.WriteLog("--------Relay turn on------"); |
| | | isRealyOK = true; |
| | |
| | | txtResultInitAngle.Text = initAngle.ToString("0.00"); |
| | | txtResultFinalAngle.Text = finalAngle.ToString("0.00"); |
| | | booltemAngle = false;//界面角度log记载的Flage 变量 booltemAngle |
| | | |
| | | |
| | | |
| | | //RunEnd(); |
| | | //Log.WriteLog("resultCreater_ListenEvent UI, RunEnd"); |
| | |
| | | |
| | | this.BeginInvoke(new MethodInvoker(delegate |
| | | { |
| | | Log.WriteLog("resultCreater_left_ListenEvent UI, data:"+ e.IData.Data.ToString() + " runStatus: " + runStatus); |
| | | Log.WriteLog("resultCreater_left_ListenEvent UI, data:" + e.IData.Data.ToString() + " runStatus: " + runStatus); |
| | | |
| | | string s = e.IData.Data.ToString(); |
| | | if (!s.Equals("JobLLMF_Done")) |
| | |
| | | |
| | | void listenEventCreater_ListenEvent(object sender, EventTool.ListenEventArgs e) |
| | | { |
| | | // Log.WriteLog("listenEventCreater_ListenEvent Enter"); |
| | | // Log.WriteLog("listenEventCreater_ListenEvent Enter"); |
| | | |
| | | this.BeginInvoke(new MethodInvoker(delegate |
| | | { |
| | |
| | | Log.WriteLog("------双手启动完成,产品送料开始,相机准备拍照----"); |
| | | //双手启动,产品送料开始 |
| | | sw.Start(); |
| | | |
| | | |
| | | StopRightCamera(); |
| | | |
| | | Log.WriteLog("listenEventCreater_ListenEvent InputTag.Start opc write OutputTag.Start"); |
| | |
| | | } |
| | | })); |
| | | |
| | | // Log.WriteLog("listenEventCreater_ListenEvent Leave"); |
| | | // Log.WriteLog("listenEventCreater_ListenEvent Leave"); |
| | | } |
| | | void listenOutTageEventCreater_ListenEvent(object sender, EventTool.ListenEventArgs e) |
| | | { |
| | |
| | | else |
| | | { |
| | | btnDisplay_left.Text = (bool)item.value ? "继电器上电并保持" : "继电器断电"; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | if ((bool)item.value && isRealyOK) |
| | | { |
| | | //Log.WriteLog("--------角度调整完成,继电器上电------"); |
| | | |
| | | |
| | | |
| | | } |
| | | else if (!((bool)item.value) && isRealyOK) |
| | | else if (!((bool)item.value) && isRealyOK) |
| | | { |
| | | Log.WriteLog("--------产品检测完成,OP复位操作,继电器断电------"); |
| | | Log.WriteLog("--------Relay turn off------"); |
| | |
| | | RunEnd(); |
| | | Log.WriteLog("resultCreater_ListenEvent UI, RunEnd"); |
| | | } |
| | | |
| | | break; |
| | | |
| | | break; |
| | | |
| | | } |
| | | })); |
| | |
| | | opc.ReadOneItem_Wrapper(item.Key, ref status); |
| | | string logstr = (null == item.Value) ? "null" : item.Value.ToString(); |
| | | Log.WriteLog("UpdateOPC itemReadDict key: " + item.Key + " value:" + logstr); |
| | | |
| | | |
| | | switch (item.Key) |
| | | { |
| | | case InputTag.Capture : |
| | | case InputTag.Capture: |
| | | break; |
| | | |
| | | case InputTag.Position: |
| | |
| | | { |
| | | object status = new Object(); |
| | | opc.ReadOneItem_Wrapper(item.Key, ref status); |
| | | string logstr =(null == item.Value) ? "null" : item.Value.ToString(); |
| | | string logstr = (null == item.Value) ? "null" : item.Value.ToString(); |
| | | Log.WriteLog("UpdateOPC itemWriteDict key: " + item.Key + " value:" + logstr); |
| | | switch (item.Key) |
| | | { |
| | |
| | | ckbCameraLight_left.Text = ckbCameraLight_left.Checked ? "光源关" : "光源开"; |
| | | break; |
| | | |
| | | //case OutputTag.ForApple: |
| | | // if (config.rightUsed == true ) |
| | | // { |
| | | // btnDisplay.Text = (bool)item.Value.value ? "继电器上电" : "继电器断电"; |
| | | |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // btnDisplay_left.Text = (bool)item.Value.value ? "继电器上电" : "继电器断电"; |
| | | |
| | | // } |
| | | //case OutputTag.ForApple: |
| | | // if (config.rightUsed == true ) |
| | | // { |
| | | // btnDisplay.Text = (bool)item.Value.value ? "继电器上电" : "继电器断电"; |
| | | |
| | | // if ((bool)item.Value.value && isRealyOK) |
| | | // { |
| | | // Log.WriteLog("--------角度调整完成,继电器上电------"); |
| | | // } |
| | | // if (!((bool)item.Value.value) && isRealyOK) |
| | | // { |
| | | // Log.WriteLog("--------产品检测完成,OP复位操作,继电器断电------"); |
| | | // } |
| | | // isRealyOK = false; |
| | | // break; |
| | | |
| | | // } |
| | | // else |
| | | // { |
| | | // btnDisplay_left.Text = (bool)item.Value.value ? "继电器上电" : "继电器断电"; |
| | | |
| | | // } |
| | | |
| | | // if ((bool)item.Value.value && isRealyOK) |
| | | // { |
| | | // Log.WriteLog("--------角度调整完成,继电器上电------"); |
| | | // } |
| | | // if (!((bool)item.Value.value) && isRealyOK) |
| | | // { |
| | | // Log.WriteLog("--------产品检测完成,OP复位操作,继电器断电------"); |
| | | // } |
| | | // isRealyOK = false; |
| | | // break; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | case 35: |
| | | alarm.Text = "调整伺服触发极限位,请检查产品打开的初始角度"; |
| | | sw.Stop(); |
| | | sw.Stop(); |
| | | sw.Reset(); |
| | | Log.WriteLog(alarm.Text.ToString()); |
| | | break; |
| | | |
| | | case 36: |
| | | alarm.Text = "定位相机光源未打开,请检查相机光源状态并急停复位"; |
| | | sw.Stop(); |
| | | sw.Stop(); |
| | | sw.Reset(); |
| | | Log.WriteLog(alarm.Text.ToString()); |
| | | break; |
| | | |
| | | case 37: |
| | | alarm.Text = "相机未拍照,请重启程序或检查PLC状态"; |
| | | sw.Stop(); |
| | | sw.Stop(); |
| | | sw.Reset(); |
| | | Log.WriteLog(alarm.Text.ToString()); |
| | | break; |
| | |
| | | { |
| | | Log.WriteLog("tVideo_left_Tick Enter"); |
| | | |
| | | cam_left.GrabImage(""); |
| | | cam_left.GrabImage(""); |
| | | |
| | | Log.WriteLog("tVideo_left_Tick Leave"); |
| | | } |
| | |
| | | |
| | | if (frmp.isOK) |
| | | { |
| | | frmConfig tmpCon = new frmConfig(opc, config,"Right"); |
| | | frmConfig tmpCon = new frmConfig(opc, config, "Right"); |
| | | tmpCon.ShowDialog(); |
| | | } |
| | | |
| | |
| | | |
| | | if (frmp.isOK) |
| | | { |
| | | frmConfig tmpCon = new frmConfig(opc, config,"Left"); |
| | | frmConfig tmpCon = new frmConfig(opc, config, "Left"); |
| | | tmpCon.ShowDialog(); |
| | | } |
| | | |
| | |
| | | |
| | | private void ckbSaveImage_CheckedChanged(object sender, EventArgs e) |
| | | { |
| | | |
| | | |
| | | if (ckbSaveImage.Checked) |
| | | { |
| | | config.saveImage=true; |
| | | config.saveImage = true; |
| | | sft.SetConfig(configPath, config); |
| | | |
| | | } |