/// <summary> /// Load Camera theo Index /// </summary> /// <param name="CameraIndex"></param> /// <returns></returns> public bool Load(int CameraIndex) { currentCameraIndex = CameraIndex; string[] writeStrings = new string[10]; string urlTool = Helper.CreatDirectionCameraVpro(CameraIndex); if (!Directory.Exists(urlTool)) { CopyTemplateCamera(urlTool); } try { CogAcqFifoEdit.Subject = (CogAcqFifoTool)Cognex.VisionPro.CogSerializer.LoadObjectFromFile(urlTool + "\\CogAcqFifoEdit.vpp"); CogCalibGrid.Subject = (CogCalibCheckerboardTool)Cognex.VisionPro.CogSerializer.LoadObjectFromFile(urlTool + "\\CogCalibGrid.vpp"); CogPMAlign.Subject = (CogPMAlignTool)Cognex.VisionPro.CogSerializer.LoadObjectFromFile(urlTool + "\\CogPMAlign.vpp"); RTCAutoCalibTool.Load(CameraIndex); currentCameraIndex = CameraIndex; // CogDisplayOut.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF394261"); CogDisplayOut.HorizontalScrollBar = false; CogDisplayOut.VerticalScrollBar = false; DisplayGraphic(); Helper.WriteLogString($"Load Camera {CameraIndex}"); Console.WriteLine($"Load Camera {CameraIndex}"); } catch { Console.WriteLine($"Fail Load Camera {CameraIndex}"); return(false); } return(true); }
/// <summary> /// /// </summary> /// <returns></returns> public PointWithTheta CalculateAlignRB() { PointWithTheta outputAlign = null; CogAcqFifoEdit.Subject.Run(); // Chụp ảnh, gửi ảnh sang Tool Calib if (CogAcqFifoEdit.Subject.RunStatus.Result != CogToolResultConstants.Accept) { MessageBox.Show(CogAcqFifoEdit.Subject.RunStatus.Exception.Message); return(null); } else { CogCalibGrid.Subject.InputImage = CogAcqFifoEdit.Subject.OutputImage; } CogCalibGrid.Subject.Run(); // Calib xong gửi ảnh qua Tool Align if (CogCalibGrid.Subject.RunStatus.Result != CogToolResultConstants.Accept) { MessageBox.Show(CogCalibGrid.Subject.RunStatus.Exception.Message); return(null); } else { CogPMAlign.Subject.InputImage = CogCalibGrid.Subject.OutputImage; } CogPMAlign.Subject.Run(); // Chạy xong Tool Align trả tọa độ + góc ra đầu ra if (CogPMAlign.Subject.RunStatus.Result != CogToolResultConstants.Accept) { MessageBox.Show(CogPMAlign.Subject.RunStatus.Exception.Message); return(null); } else { DisplayGraphic(); try { float tempX = (float)CogPMAlign.Subject.Results[0].GetPose().TranslationX; float tempY = (float)CogPMAlign.Subject.Results[0].GetPose().TranslationY; float tempTheta = (float)CogPMAlign.Subject.Results[0].GetPose().Rotation; // Trả hiển thị ra CogDisplay //CogDisplayOut.Image = CogAcqFifoEdit.Subject.OutputImage; //CogDisplayOut.StaticGraphics.Add(CogPMAlign.Subject.Results[0].CreateResultGraphics(CogPMAlignResultGraphicConstants.CoordinateAxes), ""); outputAlign = new PointWithTheta(tempX, tempY, tempTheta); } catch { outputAlign = null; } } if (outputAlign != null) { return(RTCAutoCalibTool.Trans(outputAlign)); } return(null); }
/// <summary> /// Lưu Tool Camera theo Index /// </summary> /// <param name="CameraIndex"></param> /// <returns></returns> public bool Save(int CameraIndex) { string[] writeStrings = new string[10]; string urlTool = Helper.CreatDirectionCameraVpro(CameraIndex); if (!Directory.Exists(urlTool)) { Directory.CreateDirectory(urlTool); } try { // Cognex.VisionPro.CogSerializer.SaveObjectToFile(CogAcqFifoEdit.Subject as CogAcqFifoTool, urlTool + "\\CogAcqFifoEdit.vpp"); Cognex.VisionPro.CogSerializer.SaveObjectToFile(CogCalibGrid.Subject as CogCalibCheckerboardTool, urlTool + "\\CogCalibGrid.vpp"); Cognex.VisionPro.CogSerializer.SaveObjectToFile(CogPMAlign.Subject as CogPMAlignTool, urlTool + "\\CogPMAlign.vpp"); // RTCAutoCalibTool.Save(CameraIndex); } catch { return(false); } return(true); }
/// <summary> /// Xử lý Command nhận vào từ cổng TCP /// </summary> /// <param name="cmd"></param> public string Command(string cmd) { Console.WriteLine(cmd); switch (Helper.GetCommandId(cmd)) { case "HEB": string result = CheckConditionStartAutoCalib(); if (result == "OK") { RTCAutoCalibTool.ResetReceiveData(); AutoCalibRunning = true; } else { MessageBox.Show("Không đủ điều kiện chạy!\r\n" + result); return("HE,0"); } break; case "HE": PointWithTheta tempCamPoint = GetNormalAlign(); PointWithTheta tempRobotPoint = Helper.GetRobotPointFromCmd(cmd); if (tempCamPoint != null) { RTCAutoCalibTool.AddPoint(tempCamPoint, tempRobotPoint); } else { return("HE,0"); } break; case "HEE": if (RTCAutoCalibTool.NumberPoints < 11) { MessageBox.Show("Not Enough Calib Point! N = " + RTCAutoCalibTool.NumberPoints.ToString()); return("HE,0"); } if (RTCAutoCalibTool.Calculate()) { MessageBox.Show("AutoCalib Done!"); AutoCalibRunning = false; } else { MessageBox.Show("AutoCalib Fail!"); AutoCalibRunning = false; return("HE,0"); } break; case "TT": var tempPointTT = GetNormalAlign(); if (tempPointTT != null) { RTCAutoCalibTool.CalTTTransMatrix(cmd, tempPointTT); } return("TT,1"); case "XT": string tempMessage; PointWithTheta tempPoint = CalculateAlignRB(); if (tempPoint != null) { tempMessage = Helper.CreatXTMessage(tempPoint); } else { return("XT,0"); } return(tempMessage); default: break; } return("HE,1"); }