public bool CheckGreenCircle_HighWay() // khi robot bặt vòng tròn xanh. chính nó phải ngưng nếu dò ra có robot nào trong vùng vòng tròn này ngược lại với vòng tròn vàng { bool onStop = false; List <RobotUnity> robotTochList = new List <RobotUnity>(); foreach (RobotUnity r in RobotUnitylist) { Point cG = CenterOnLineCv(Center_G); // TRONG TAM CUA NO if (r.robotTag == RobotStatus.WORKING) { if (FindHeaderInsideCircleArea(MiddleHeaderCv(), cG, r.Radius_G) || FindHeaderInsideCircleArea(Global_Object.CoorCanvas(properties.pose.Position), cG, r.Radius_G) || FindHeaderInsideCircleArea(MiddleHeaderCv1(), cG, r.Radius_G)) { // tim do ưu tien tai cac diem giao nhau if (checkAllRobotsHasInsideBayIdNear(r)) { STATE_SPEED = "GREEN_STOP_HIGHWAY " + r.properties.Label; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); delay(2000); onStop = true; return(onStop); } } } } return(onStop); }
public virtual Point BottomHeaderCv()//TopHeaderCv()// { double AngleW = -properties.pose.AngleW; double x = Global_Object.CoorCanvas(properties.pose.Position).X + Math.Sqrt((Math.Abs(L1Cv) * Math.Abs(L1Cv)) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Cos(AngleW + Math.Atan2(-WSCv / 2, L1Cv)); double y = Global_Object.CoorCanvas(properties.pose.Position).Y + Math.Sqrt(Math.Abs(L1Cv) * Math.Abs(L1Cv) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Sin(AngleW + Math.Atan2(-WSCv / 2, L1Cv)); return(new Point(x, y)); }
public virtual Point TopHeaderCenterCv(double dc)//BottomHeaderCv() { double AngleW = -properties.pose.AngleW; double x = Global_Object.CoorCanvas(properties.pose.Position).X + Math.Sqrt(Math.Abs(dc) * Math.Abs(dc) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Cos(AngleW + Math.Atan2(WSCv / 2, dc)); double y = Global_Object.CoorCanvas(properties.pose.Position).Y + Math.Sqrt(Math.Abs(dc) * Math.Abs(dc) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Sin(AngleW + Math.Atan2(WSCv / 2, dc)); return(new Point(x, y)); }
public virtual Point TopTailCv()//BottomTailCv() { double AngleW = -properties.pose.AngleW; double x = Global_Object.CoorCanvas(properties.pose.Position).X + Math.Sqrt(Math.Abs(L2Cv) * Math.Abs(L2Cv) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Cos(AngleW + Math.Atan2(WSCv / 2, -L2Cv)); double y = Global_Object.CoorCanvas(properties.pose.Position).Y + Math.Sqrt(Math.Abs(L2Cv) * Math.Abs(L2Cv) + Math.Abs(WSCv / 2) * Math.Abs(WSCv / 2)) * Math.Sin(AngleW + Math.Atan2(WSCv / 2, -L2Cv)); return(new Point(x, y)); }
public bool FindHeaderIsCloseRiskAreaCv(Point p) { // return ExtensionService.CalDistance(TopHeader(),p)<properties.DistanceIntersection || ExtensionService.CalDistance(BottomHeader(), p) < properties.DistanceIntersection || ExtensionService.CalDistance(MiddleHeader(), p) < properties.DistanceIntersection ? true:false; //Console.WriteLine("Vi tri robot "+ this.properties.NameID+" = " + properties.pose.Position); // Console.WriteLine("Vi tien gan " + p.ToString()); // Console.WriteLine("kHOAN CACH " + ExtensionService.CalDistance(properties.pose.Position, p)); Point pp = Global_Object.CoorCanvas(properties.pose.Position); double ddd = ExtensionService.CalDistance(Global_Object.CoorCanvas(properties.pose.Position), p); return(ExtensionService.CalDistance(Global_Object.CoorCanvas(properties.pose.Position), p) < 40 ? true : false); }
//giua middle 1 va robot public virtual Point MiddleHeaderCv3() { double PRx = Global_Object.CoorCanvas(properties.pose.Position).X; double PRy = Global_Object.CoorCanvas(properties.pose.Position).Y; if (L1Cv != 0 && WSCv != 0) { return(new Point((MiddleHeaderCv1().X + PRx) / 2, (MiddleHeaderCv1().Y + PRy) / 2)); } else { return(new Point(-1, -1)); } }
public bool FindHeaderInsideCircleArea(Point pheader, double r) { Point ccPoint = Global_Object.CoorCanvas(properties.pose.Position); double leftSideEq = (pheader.X - ccPoint.X) * (pheader.X - ccPoint.X) + (pheader.Y - ccPoint.Y) * (pheader.Y - ccPoint.Y); valueSC = Math.Sqrt(leftSideEq) + ""; if (Math.Sqrt(leftSideEq) <= r) { return(true); } else { return(false); } }
public bool CheckInBuffer(bool turnon) { bool onstop = false; if (turnon) { if (RobotUnitylist.Count > 0) { foreach (RobotUnity r in RobotUnitylist) { String lableR = r.properties.Label; if (r.robotTag == RobotStatus.WORKING) { Point thCV = TopHeaderCv(); Point mdCV0 = MiddleHeaderCv(); Point mdCV1 = MiddleHeaderCv1(); Point mdCV2 = MiddleHeaderCv2(); Point mdCV3 = MiddleHeaderCv3(); Point bhCV = BottomHeaderCv(); Point Rp = Global_Object.CoorCanvas(this.properties.pose.Position); // bool onTouch= FindHeaderIntersectsFullRiskArea(this.TopHeader()) | FindHeaderIntersectsFullRiskArea(this.MiddleHeader()) | FindHeaderIntersectsFullRiskArea(this.BottomHeader()); // bool onTouch = r.FindHeaderIntersectsFullRiskAreaCv(thCV) | r.FindHeaderIntersectsFullRiskAreaCv(mdCV) | r.FindHeaderIntersectsFullRiskAreaCv(bhCV); bool onTouchR = r.FindHeaderInsideCircleArea(Rp, r.Radius_S); bool onTouch0 = r.FindHeaderInsideCircleArea(mdCV0, r.Radius_S); bool onTouch1 = r.FindHeaderInsideCircleArea(mdCV1, r.Radius_S); bool onTouch2 = r.FindHeaderInsideCircleArea(mdCV2, r.Radius_S); bool onTouch3 = r.FindHeaderInsideCircleArea(mdCV3, r.Radius_S); if (onTouch1) { // robotLogOut.ShowTextTraffic(r.properties.Label+" => CheckIntersection"); if (r.onFlagSafeSmallcircle || r.onFlagSafeYellowcircle || r.onFlagSafeOrgancircle) { STATE_SPEED = "CHECKINT_BUFFER_SECTION_STOP " + r.properties.Label; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); delay(2000); onstop = true; break; } } } } } } return(onstop); }
public int CheckSafeDistance() // KIểm tra khoản cách an toàn/ nếu đang trong vùng close với robot khác thì giảm tốc độ, chuyển sang chế độ dò risk area { int iscloseDistance = 0; foreach (RobotUnity r in RobotUnitylist) { if (r.onFlagSupervisorTraffic) { Point rP = MiddleHeaderCv(); // bool onFound = r.FindHeaderIsCloseRiskArea(this.properties.pose.Position); bool onFound = r.FindHeaderIsCloseRiskAreaCv(rP); if (onFound) { // if robot in list is near but add in risk list robot // robotLogOut.ShowTextTraffic(r.properties.Label + "- Intersection"); if (!RobotUnityRiskList.ContainsKey(r.properties.NameId)) { RobotUnityRiskList.Add(r.properties.NameId, r); } // reduce speed robot control iscloseDistance = 2; } else { // if robot in list is far but before registe in list, must remove in list RemoveRiskList(r.properties.NameId); double rd = ExtensionService.CalDistance(Global_Object.CoorCanvas(this.properties.pose.Position), Global_Object.CoorCanvas(r.properties.pose.Position)); if (rd < DistanceToSetSlowDown && rd > 60) { iscloseDistance = 1; } else { iscloseDistance = 0; } } } } return(iscloseDistance); }
public bool CheckYellowCircle() // khi robot bặt vòng tròn vàng. tất cả robot khác ngưng nếu dò ra có robot nào trong vùng vòng tròn này { bool onstop = false; foreach (RobotUnity r in RobotUnitylist) { // kiểm tra có robot chinh nó có nằm trong vòng tròn vàng nào không nếu có ngưng if (r.onFlagSafeYellowcircle) { Point cY = r.CenterOnLineCv(Center_R); // TRONG TAM ROBOT KHAC Point rP = Global_Object.CoorCanvas(properties.pose.Position); Point md = MiddleHeaderCv(); Point md1 = MiddleHeaderCv1(); Point md2 = MiddleHeaderCv2(); Point md3 = MiddleHeaderCv3(); if (r.FindHeaderInsideCircleArea(MiddleHeaderCv(), cY, r.Radius_R) || r.FindHeaderInsideCircleArea(rP, cY, r.Radius_R) || r.FindHeaderInsideCircleArea(md1, cY, r.Radius_R) ) { STATE_SPEED = "YELLOWC_STOP"; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); delay(2000); onstop = true; break; } /* else * { * STATE_SPEED = "YELLOWC_NO_NORMAL"; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL,false); * }*/ } } return(onstop); }
public override void Draw() { try { if (properties.IsConnected) { if ((agvErr == true) || (flagLostPosition == true)) { setColorRobotStatus(RobotStatusColorCode.ROBOT_STATUS_ERROR); } else { setColorRobotStatus(RobotStatusColorCode.ROBOT_STATUS_CONNECT); } } else { if (properties.RequestChargeBattery) { setColorRobotStatus(RobotStatusColorCode.ROBOT_STATUS_CHARGING); } else { setColorRobotStatus(RobotStatusColorCode.ROBOT_STATUS_DISCONNECT); } } this.border.Dispatcher.BeginInvoke(new System.Threading.ThreadStart(() => { props.rbRotateTransform.Angle = -properties.pose.Angle; Point cPoint = Global_Object.CoorCanvas(properties.pose.Position); props.rbTranslate = new TranslateTransform(cPoint.X - (border.Width / 2), cPoint.Y - (border.Height / 2)); props.rbTransformGroup.Children[1] = props.rbTranslate; //Render Status props.contentRotateTransform.Angle = (properties.pose.Angle); props.contentTranslate = new TranslateTransform(0, 0); props.contentTransformGroup.Children[1] = props.contentTranslate; headerPoint.RenderTransform = new TranslateTransform(MiddleHeaderCv().X - 2.5, MiddleHeaderCv().Y - 1); headerPoint1.RenderTransform = new TranslateTransform(MiddleHeaderCv1().X - 2.5, MiddleHeaderCv1().Y - 1); headerPoint2.RenderTransform = new TranslateTransform(MiddleHeaderCv2().X - 2.5, MiddleHeaderCv2().Y - 1); headerPoint3.RenderTransform = new TranslateTransform(MiddleHeaderCv3().X - 2.5, MiddleHeaderCv3().Y - 1); PathGeometry pgeometry = new PathGeometry(); PathFigure pF = new PathFigure(); pF.StartPoint = TopHeaderCv(); // pF.StartPoint = new Point(TopHeader().X * 10, TopHeader().Y * 10); LineSegment pp = new LineSegment(); pF.Segments.Add(new LineSegment() { Point = BottomHeaderCv() }); pF.Segments.Add(new LineSegment() { Point = BottomTailCv() }); pF.Segments.Add(new LineSegment() { Point = TopTailCv() }); pF.Segments.Add(new LineSegment() { Point = TopHeaderCv() }); // pF.Segments.Add(new LineSegment() { Point = new Point(BottomHeader().X*10, BottomHeader().Y * 10) }); //pF.Segments.Add(new LineSegment() { Point = new Point(BottomTail().X * 10, BottomTail().Y * 10) }); // pF.Segments.Add(new LineSegment() { Point = new Point(TopTail().X * 10, TopTail().Y * 10) }); //pF.Segments.Add(new LineSegment() { Point = new Point(TopHeader().X * 10, TopHeader().Y * 10) }); pgeometry.Figures.Add(pF); safetyArea.Data = pgeometry; // props.rbID.Content = properties.pose.Position.X.ToString("0"); // props.rbTask.Content = properties.pose.Position.Y.ToString("0"); props.rbID.Content = properties.Label; // props.rbTask.Content = properties.pose.Position.Y.ToString("0"); smallCircle.Set(cPoint, new Point(0, 0), new Point(Radius_S, Radius_S)); Point ccR = CenterOnLineCv(Center_R); redCircle.Set(ccR, new Point(0, 0), new Point(Radius_R, Radius_R)); Point ccB = CenterOnLineCv(Center_B); blueCircle.Set(ccB, new Point(0, 0), new Point(Radius_B, Radius_B)); Point ccG = CenterOnLineCv(Center_G); greenCircle.Set(ccG, new Point(0, 0), new Point(Radius_G, Radius_G)); Point ccO = CenterOnLineCv(Center_O); orangeCircle.Set(ccO, new Point(0, 0), new Point(Radius_O, Radius_O)); })); } catch { } }
public bool CheckBlueCircle() // khi robot bặt vòng tròn xanh. chính nó phải ngưng nếu dò ra có robot nào trong vùng vòng tròn này ngược lại với vòng tròn vàng { bool onStop = false; foreach (RobotUnity r in RobotUnitylist) { if (r.prioritLevel.IndexOnMainRoad == prioritLevel.IndexOnMainRoad) { if (checkOrgancCircle()) { onStop = true; break; } } else { // kiểm tra có robot nào nằm trong vòng tròn và trạng thái đang làm việc an toàn này kg? Point cB = CenterOnLineCv(Center_B); // TRONG TAM CUA NO if (r.robotTag == RobotStatus.WORKING) { if (FindHeaderInsideCircleArea(r.MiddleHeaderCv(), cB, Radius_B) || FindHeaderInsideCircleArea(Global_Object.CoorCanvas(r.properties.pose.Position), cB, Radius_B)) { if (!r.onFlagSafeGreencircle) { STATE_SPEED = "BLUEC_STOP " + r.properties.Label; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); delay(2000); onStop = true; break; } } /* else * { * STATE_SPEED = "BLUEC_WORKING_NORMAL "; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL,false); * }*/ } /* else * { * STATE_SPEED = "BLUEC_IDLE_NORMAL "; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL,false); * }*/ } } return(onStop); }
public bool CheckIntersection(bool turnon, bool sameindexRoad = false) { bool onstop = false; if (turnon) { if (RobotUnitylist.Count > 0) { foreach (RobotUnity r in RobotUnitylist) { String lableR = r.properties.Label; if (r.robotTag == RobotStatus.WORKING) { Point thCV = TopHeaderCv(); Point mdCV0 = MiddleHeaderCv(); Point mdCV1 = MiddleHeaderCv1(); Point mdCV2 = MiddleHeaderCv2(); Point mdCV3 = MiddleHeaderCv3(); Point bhCV = BottomHeaderCv(); Point Rp = Global_Object.CoorCanvas(this.properties.pose.Position); // bool onTouch= FindHeaderIntersectsFullRiskArea(this.TopHeader()) | FindHeaderIntersectsFullRiskArea(this.MiddleHeader()) | FindHeaderIntersectsFullRiskArea(this.BottomHeader()); // bool onTouch = r.FindHeaderIntersectsFullRiskAreaCv(thCV) | r.FindHeaderIntersectsFullRiskAreaCv(mdCV) | r.FindHeaderIntersectsFullRiskAreaCv(bhCV); bool onTouchR = r.FindHeaderInsideCircleArea(Rp, r.Radius_S); bool onTouch0 = r.FindHeaderInsideCircleArea(mdCV0, r.Radius_S); bool onTouch1 = r.FindHeaderInsideCircleArea(mdCV1, r.Radius_S); bool onTouch2 = r.FindHeaderInsideCircleArea(mdCV2, r.Radius_S); bool onTouch3 = r.FindHeaderInsideCircleArea(mdCV3, r.Radius_S); if (onTouchR || onTouch1 || onTouch2) { // robotLogOut.ShowTextTraffic(r.properties.Label+" => CheckIntersection"); if (r.onFlagSafeBluecircle) { /* STATE_SPEED = "CHECKINT_WORKING_SECTION_NORMAL [FLAG] " + r.properties.Label; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL*/ } else { STATE_SPEED = "CHECKINT_WORKING_SECTION_STOP " + r.properties.Label; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); delay(2000); onstop = true; } break; } else if (onTouch0) { // robotLogOut.ShowTextTraffic(r.properties.Label+" => CheckIntersection"); STATE_SPEED = "CHECKINT_WORKING_SECTION_SLOW " + r.properties.Label; SetSpeedTraffic(RobotSpeedLevel.ROBOT_SPEED_STOP, true); onstop = true; delay(2000); break; } /* else * { * STATE_SPEED = "CHECKINT_WORKING_SECTION_NORMAL "; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL,false); * }*/ } /* else * { * STATE_SPEED = "CHECKINT_IDLE_SECTION_NORMAL "; * SetSpeed(RobotSpeedLevel.ROBOT_SPEED_NORMAL,false); * }*/ } } } return(onstop); }
//#############---METHOD---############ public StationShape(Canvas pCanvas, dtBuffer buffer) { props = new Props(); props.bufferDb = buffer; BorderBrush = new SolidColorBrush(Colors.Transparent); BorderThickness = new Thickness(1); CornerRadius = new CornerRadius(1.2); RenderTransformOrigin = new Point(0, 0); props._stationGrid = new Grid(); Background = new SolidColorBrush(Colors.Transparent); ToolTip = ""; ToolTipOpening += ChangeToolTipContent; props._stationInfoBorder = new Border(); props._stationInfoBorder.Background = new SolidColorBrush(Colors.Red); props._stationInfoBorder.CornerRadius = new CornerRadius(1.3); props._stationInfoBorder.Height = 5; Grid.SetColumn(props._stationInfoBorder, 0); //Name = "Stationx" + Global_Mouse.EncodeTransmissionTimestamp(); //Object name //Name = props.bufferDb.bufferName.Replace(" ", ""); //Object name //ContextMenu = new ContextMenu(); //=================================== //MenuItem propertiesItem = new MenuItem(); //propertiesItem.Header = "Thông tin"; //propertiesItem.Click += PropertiesMenu; //=================================== //MenuItem editItem = new MenuItem(); //editItem.Header = "Tùy chỉnh"; //editItem.Click += EditMenu; //=================================== //MenuItem removeItem = new MenuItem(); //removeItem.Header = "Xóa"; //removeItem.Click += RemoveMenu; //=================================== //ContextMenu.Items.Add(propertiesItem); //ContextMenu.Items.Add(editItem); //ContextMenu.Items.Add(rotateItem); //ContextMenu.Items.Add(removeItem); //====================EVENT===================== //MouseLeave += MouseLeaveStation; //MouseMove += MouseHoverStation; //MouseLeftButtonDown += MouseLeftButtonDownStation; //MouseRightButtonDown += MouseRightButtonDownStation; //===================CREATE===================== props.NameID = props.bufferDb.bufferName; //label //props.Bays = props.bufferDb.maxBay; //props.Rows = props.bufferDb.maxRow; Width = 11 * props.bufferDb.maxBay; Height = 13 * props.bufferDb.maxRow; props._palletList = new SortedDictionary <string, PalletShape>(); props._myTransformGroup = new TransformGroup(); props._myRotateTransform = new RotateTransform(); props._myTranslateTransform = new TranslateTransform(); //Add Pallet to Grid for (int bayIndex = 0; bayIndex < props.bufferDb.maxBay; bayIndex++) //Column Index { //Create a Col ColumnDefinition colTemp = new ColumnDefinition(); colTemp.Name = Name + "xL" + bayIndex; props._stationGrid.ColumnDefinitions.Add(colTemp); //Create GridLine Grid gridLine = new Grid(); // Create BorderLine Border borderLine = new Border(); Grid.SetColumn(borderLine, bayIndex); borderLine.Child = gridLine; // props._stationGrid.Children.Add(borderLine); if (bayIndex > 0) { borderLine.BorderBrush = new SolidColorBrush(Colors.Black); borderLine.BorderThickness = new Thickness(0.3, 0, 0, 0); } //Add Pallet to GridPallet ==> add GridPallet to BorderLine for (int rowIndex = 0; rowIndex < props.bufferDb.maxRow; rowIndex++) //Row Index, start from 1, Row 0 use for Infomation { //Create Rows for Col RowDefinition rowTemp = new RowDefinition(); rowTemp.Name = Name + "xR" + rowIndex; //rowTemp.MinHeight = 10; gridLine.RowDefinitions.Add(rowTemp); //============= //PalletShape palletTemp = new PalletShape(Name + "x" + lineIndex + "x" + palletIndex); PalletShape palletTemp = new PalletShape("Pallet" + "x" + bayIndex + "x" + rowIndex); Grid.SetRow(palletTemp, rowIndex); gridLine.Children.Add(palletTemp); props._palletList.Add(palletTemp.name, palletTemp); } } //==================SPECIALPOINT=================== props._eightCorner = new List <Point>(); for (int i = 0; i < 8; i++) { Point temp = new Point(); props._eightCorner.Add(temp); } //==================CHILDREN=================== //props.stationGrid.Children.Add(props.stationInfomation); Child = props._stationGrid; props._myTransformGroup.Children.Add(props._myRotateTransform); props._myTransformGroup.Children.Add(props._myTranslateTransform); RenderTransform = props._myTransformGroup; dynamic bufferData = JsonConvert.DeserializeObject(props.bufferDb.bufferData); if (bufferData != null) { props._posision = Global_Object.CoorCanvas(new Point((double)bufferData.x, (double)bufferData.y)); props._rotate = (double)bufferData.angle; } props._myRotateTransform.Angle = props._rotate; props._myTranslateTransform = new TranslateTransform(props._posision.X, props._posision.Y); props._myTransformGroup.Children[0] = props._myRotateTransform; props._myTransformGroup.Children[1] = props._myTranslateTransform; props._canvas = pCanvas; props._canvas.Children.Add(this); //aTimer = new System.Timers.Timer(); //aTimer.Interval = 1000; //aTimer.Elapsed += OnTimedRedrawStationEvent; //aTimer.AutoReset = true; //aTimer.Enabled = true; //Get list pallet }
//private void OnTimedRedrawStationEvent(object sender, ElapsedEventArgs e) //{ // ReDraw(props._posision); //} public void ReDraw() { Dispatcher.BeginInvoke(new ThreadStart(() => { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Global_Object.url + "buffer/getListBuffer"); request.Method = "GET"; request.ContentType = @"application/json"; HttpWebResponse response = request.GetResponse() as HttpWebResponse; using (Stream responseStream = response.GetResponseStream()) { StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); string result = reader.ReadToEnd(); DataTable buffers = JsonConvert.DeserializeObject <DataTable>(result); foreach (DataRow dr in buffers.Rows) { dtBuffer tempBuffer = new dtBuffer { creUsrId = int.Parse(dr["creUsrId"].ToString()), creDt = dr["creDt"].ToString(), updUsrId = int.Parse(dr["updUsrId"].ToString()), updDt = dr["updDt"].ToString(), bufferId = int.Parse(dr["bufferId"].ToString()), bufferName = dr["bufferName"].ToString(), bufferNameOld = dr["bufferNameOld"].ToString(), bufferCheckIn = dr["bufferCheckIn"].ToString(), bufferData = dr["bufferData"].ToString(), maxRow = int.Parse(dr["maxRow"].ToString()), maxBay = int.Parse(dr["maxBay"].ToString()), maxRowOld = int.Parse(dr["maxRowOld"].ToString()), maxBayOld = int.Parse(dr["maxBayOld"].ToString()), bufferReturn = bool.Parse(dr["bufferReturn"].ToString()), bufferReturnOld = bool.Parse(dr["bufferReturnOld"].ToString()), //pallets }; if ((tempBuffer.bufferId == this.props.bufferDb.bufferId) && (tempBuffer.bufferName == this.props.bufferDb.bufferName)) { if ((this.props.bufferDb.maxBay != tempBuffer.maxBay) || ((this.props.bufferDb.maxRow != tempBuffer.maxRow))) { props.bufferDb = tempBuffer; props._stationGrid.Children.Clear(); props._stationGrid.ColumnDefinitions.Clear(); props._stationGrid.RowDefinitions.Clear(); props._palletList.Clear(); Width = 11 * props.bufferDb.maxBay; Height = 13 * props.bufferDb.maxRow; for (int bayIndex = 0; bayIndex < props.bufferDb.maxBay; bayIndex++) //Column Index { //Create a Col ColumnDefinition colTemp = new ColumnDefinition(); colTemp.Name = Name + "xL" + bayIndex; props._stationGrid.ColumnDefinitions.Add(colTemp); //Create GridLine Grid gridLine = new Grid(); // Create BorderLine Border borderLine = new Border(); Grid.SetColumn(borderLine, bayIndex); borderLine.Child = gridLine; // props._stationGrid.Children.Add(borderLine); if (bayIndex > 0) { borderLine.BorderBrush = new SolidColorBrush(Colors.Black); borderLine.BorderThickness = new Thickness(0.3, 0, 0, 0); } //Add Pallet to GridPallet ==> add GridPallet to BorderLine for (int rowIndex = 0; rowIndex < props.bufferDb.maxRow; rowIndex++) //Row Index, start from 1, Row 0 use for Infomation { //Create Rows for Col RowDefinition rowTemp = new RowDefinition(); rowTemp.Name = Name + "xR" + rowIndex; //rowTemp.MinHeight = 10; gridLine.RowDefinitions.Add(rowTemp); //============= //PalletShape palletTemp = new PalletShape(Name + "x" + lineIndex + "x" + palletIndex); PalletShape palletTemp = new PalletShape("Pallet" + "x" + bayIndex + "x" + rowIndex); Grid.SetRow(palletTemp, rowIndex); gridLine.Children.Add(palletTemp); props._palletList.Add(palletTemp.name, palletTemp); } } } else { props.bufferDb = tempBuffer; } } } } dynamic bufferData = JsonConvert.DeserializeObject(props.bufferDb.bufferData); props._posision = Global_Object.CoorCanvas(new Point(((bufferData != null) ? (((double)bufferData.x)) : 0), ((bufferData != null) ? (((double)bufferData.y)) : 0))); props._rotate = (bufferData != null) ? (((double)bufferData.angle)) : 0; Draw(); })); }