private void ReadCameraSetting() { //cameras.Clear(); try { XmlDocument xmlDocCamera = new XmlDocument(); xmlDocCamera.Load("./Data/" + "CameraSettings.xml"); XmlNodeList xnl; XmlNode xn; xn = xmlDocCamera.GetElementsByTagName("Camera")[0]; xnl = xn.ChildNodes; int i = 1; if (ccameras.Count == 0) { foreach (XmlNode x in xnl) { CCamera c = new CCamera(x.Attributes["name"].Value); c.sortnum = i - 1; c.logicName = "CCD" + i; c.name = x.Attributes["name"].Value; c.ExposureTime = int.Parse(x.Attributes["ExposureTime"].Value); c.Gain = int.Parse(x.Attributes["Gain"].Value); c.PixelDist = double.Parse(x.Attributes["PixelDist"].Value); c.OnImageProcessedEvent += new CCamera.OnImageProcessedEventHandler(OnImageProcessedEvent); ccameras.Add(c); i++; } } for (int ci = 0; ci < ccameras.Count; ci++) { CCD.Add("CCD" + (ci + 1).ToString(), ccameras[ci]); } } catch { MessageBox.Show("相机加载错误"); } }
private void OnImageProcessedEvent(CCamera instance, HObject ho_Image) { try { if (InvokeRequired) { Invoke(new CCamera.OnImageProcessedEventHandler(OnImageProcessedEvent), new object[] { instance, ho_Image }); return; } kk++; //Console.WriteLine("kk:" +kk); instance.tempImage.Dispose(); HOperatorSet.CopyImage(instance.Image, out instance.tempImage); HTuple cwindow = new HTuple(); switch (instance.logicName) { case "CCD1": cwindow = hWindowControl1.HalconWindow; break; case "CCD2": cwindow = hWindowControl2.HalconWindow; break; case "CCD3": cwindow = hWindowControl3.HalconWindow; break; case "CCD4": cwindow = hWindowControl4.HalconWindow; break; case "CCD5": cwindow = hWindowControl5.HalconWindow; break; //case "CCD6": cwindow = hWindowControl6.HalconWindow; // break; } for (int i = 0; i < 6; i++) { if (instance.logicName == "CCD" + i.ToString()) { HOperatorSet.SetColor(cwindow, "green"); HOperatorSet.SetDraw(cwindow, "margin"); HTuple w, h; HOperatorSet.GetImageSize(ho_Image, out w, out h); HOperatorSet.SetPart(cwindow, 0, 0, h, w); HOperatorSet.DispObj(ho_Image, cwindow); if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0) { HOperatorSet.DispObj(instance.RegionToDisp, cwindow); HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false"); HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 10, 10, "green", "false"); } } } switch (instance.logicName) { case "CCD1": cwindow = hWindowControl6.HalconWindow; break; case "CCD2": cwindow = hWindowControl7.HalconWindow; break; case "CCD3": cwindow = hWindowControl8.HalconWindow; break; case "CCD4": cwindow = hWindowControl9.HalconWindow; break; case "CCD5": cwindow = hWindowControl10.HalconWindow; break; } for (int i = 0; i < 6; i++) { if (instance.logicName == "CCD" + i.ToString()) { HOperatorSet.SetColor(cwindow, "green"); HOperatorSet.SetDraw(cwindow, "margin"); HTuple w, h; HOperatorSet.GetImageSize(ho_Image, out w, out h); HOperatorSet.SetPart(cwindow, 0, 0, h, w); HOperatorSet.DispObj(ho_Image, cwindow); if (instance.RegionToDisp.IsInitialized() && instance.resultHTuple.Length > 0) { HOperatorSet.DispObj(instance.RegionToDisp, cwindow); //if (instance.logicName == "CCD1") //{ // HalconHelp.set_display_font(cwindow, 14, "courier", "false", "false"); // HalconHelp.disp_message(cwindow, instance.resultHTuple, "window", 2, 2, "green", "false"); //} } } } DataRowCollection drc = ds.Tables["detailTable"].Rows; int rs = 0; string shijian = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString(); string path = PathHelper.currentProductPath + @"\" + shijian + ".txt"; foreach (DataRow dr in drc) { string s = dr[0].ToString(); if (dr[0].ToString() == instance.logicName) { if (instance.result.resultToShow.Count > rs) { double cl = double.Parse(instance.result.resultToShow[rs].data); double xz = (double)dr[2]; dr[5] = Math.Round((cl + xz), 3); if (double.Parse(dr[5].ToString()) <= double.Parse(dr[3].ToString()) && double.Parse(dr[5].ToString()) >= double.Parse(dr[4].ToString())) { dr[6] = "OK"; } else { dr[6] = "NG"; } if (instance.goodcountlist.Count() != 0) { dr[7] = Math.Round((double)(instance.goodcountlist[rs] / (double)Turntable.Instance.pn.totalCount * 100), 2).ToString() + "%"; //Console.WriteLine("" + instance.goodcountlist[rs] + "---" + (double)Turntable.Instance.pn.totalCount); } rs++; } else { dr[5] = 0; } // File.AppendAllText(path,dr[1].ToString() + " " + dr[5].ToString(), Encoding.Default); } } //File.AppendAllText(path,Environment.NewLine, Encoding.Default); DataHelper.CheckData(ds, instance.logicName, instance); } catch (Exception e) { MyDebug.ShowMessage("界面图像处" + e.Message); } finally { ho_Image.Dispose(); instance.RegionToDisp.Dispose(); instance.Image.Dispose(); instance.resultHTuple = new HTuple(); //UpdateProInfo(); } }
public static void CheckData(DataSet ds, string cameraName, CCamera instance) { Initial(); int current = int.Parse(cameraName.Substring(3, 1)); string nextCameraName = "CCD" + (current + 1).ToString(); DataRowCollection drc = ds.Tables["detailTable"].Rows; int checkresult = (int)Holes.firstHole; List <int> CheckList = new List <int>(); int index = 0; foreach (DataRow dr in drc) { if (dr[0].ToString() == cameraName) { double xz = (double)dr[2]; double sx = (double)dr[3]; double xx = (double)dr[4]; double jg = (double)dr[5]; //良品 if (jg >= xx && jg <= sx) { checkresult = (int)Holes.secondHole; instance.goodcountlist[index]++; } //未识别 else if (jg == xz) { checkresult = (int)Holes.thirdHole; } //不良品 else { checkresult = (int)Holes.firstHole; instance.badcountlist[index]++; } CheckList.Add(checkresult); index++; } } //不良品 if (CheckList.Contains((int)Holes.firstHole)) { checkresult = (int)Holes.firstHole; } //未识别 else if (CheckList.Contains((int)Holes.thirdHole)) { checkresult = (int)Holes.thirdHole; } //良品 else if (CheckList.Contains((int)Holes.secondHole)) { checkresult = (int)Holes.secondHole; } else { checkresult = (int)Holes.thirdHole; } if (CheckList.Count != 0) { //Card.mu.WaitOne(); lock (Card.lockobj) { //10.28ch改为逆向查找 Nut nut; for (int i = 0; i < Turntable.Instance.nutqueue.Count; i++) { CameraCheckOut cco = new CameraCheckOut(); nut = Turntable.Instance.nutqueue[i]; int length = nut.checkedResult.Count; // Console.WriteLine("" + nut.checkedResult[length - 1].nextCameraName + "ff" + instance.poscmin + "ww" + nut.initialPos); if (nut.checkedResult[length - 1].nextCameraName == cameraName && instance.poscmin == nut.initialPos) //if (nut.posNo == CameraID[cameraName]) { cco.leadToTheHole = checkresult; cco.nextCameraName = nextCameraName; // Console.WriteLine("" + cameraName + "" + nut.initialPos); nut.checkedResult.Add(cco); jiancejieguo jcjg1 = new jiancejieguo(); foreach (DataRow drx in drc) { if (drx[0].ToString() == cameraName) { jcjg1 = new jiancejieguo(); jcjg1.jiancexiangmu = drx[1].ToString(); jcjg1.celiangjieguo = (double)drx[5]; nut.jiance.Add(jcjg1); } } break; } } } } }