Пример #1
0
        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);
            }
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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 { }
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        //#############---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
        }
Пример #15
0
        //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();
            }));
        }