Ejemplo n.º 1
0
        public MainWindow()
        {
            InitializeComponent();

            //enum test
            SegmentSummaryStates test = SegmentSummaryStates.CycleEnCours;
            string teste = test.Description();
            //System.Windows.MessageBox.Show(teste);
        }
Ejemplo n.º 2
0
        public void NextSegment()
        {
            /**************************************************************************************************************
            *  -> Method     : NextSegment
            *  -> Event      : "Skip Segmemnt" clicked OR when Segment ends
            *  -> Description: This method skips to the next segment. It also updates the properties of the running and next segment
            *              There is an object of type Segment_Details called "CurrentRunningSegment" and it holds all properties
            *              of a segment adn is updated with each new Segment.
            **************************************************************************************************************/
            try
            {
                //If reach Max Segment
                if (Int32.Parse(CurrentRunningSegment.Segment_Number) == Segments.Count - 1)
                {
                    MessageBox.Show("No More Segments Available");
                    RunningRemSegments = "0";
                    RunningNb          = (Int32.Parse(CurrentRunningSegment.Segment_Number) + 1).ToString();
                    NextNb             = "NULL";
                    NextRampHr         = "NULL";
                    NextRampMin        = "NULL";
                    NextSetPt          = "NULL";
                    NextSoak           = "NULL";
                    return;
                }

                //1-Update Running Segment Properties
                CurrentRunningSegment = Segments[(Int32.Parse(RunningNb))]; //runningNb is 2 lets say, so segment 2. I want to go to segment 3, which is Segments[3-1]=Segments[2]=Segments[RunningNb]
                RunningNb             = (Int32.Parse(CurrentRunningSegment.Segment_Number)).ToString();
                RunningRemSegments    = (Int32.Parse(NbSegments) - Int32.Parse(RunningNb)).ToString();
                RunningRampHrUI       = CurrentRunningSegment.MAX_RAMP;
                RunningRampMinUI      = CurrentRunningSegment.MAX_RAMP;
                SetPt       = CurrentRunningSegment.RAMP_SP;
                RunningSoak = CurrentRunningSegment.SOAK_TIME;

                //2-Update Next Segment Properties
                NextNb      = (Int32.Parse(RunningNb) + 1).ToString();
                NextRampHr  = CurrentRunningSegment.MAX_RAMP;
                NextRampMin = CurrentRunningSegment.MIN_RAMP;
                NextSetPt   = CurrentRunningSegment.RAMP_SP;
                NextSoak    = CurrentRunningSegment.SOAK_SP;

                SegmentSummaryStates testEnAttente = SegmentSummaryStates.EnAttente;
                TitleMenuStatus = testEnAttente.Description();

                //System.Windows.MessageBox.Show(teste);
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }
        }
Ejemplo n.º 3
0
        //METHODS
        public void InitializeRecipeSegments()
        {
            /**************************************************************************************************************
            *  -> Method     : InitializeRecipeSegments
            *  -> Event      : When Commit load is clicked
            *  -> Description: This method is used to initialize the chosen recipe by binding all of the properties to the UI.
            *               The list of type Segment_Details called "Segments" holds all segments in the recipe and allows
            *               to skip between the segments.
            **************************************************************************************************************/


            //1-instantiate separate OPC connection on separate thread

            //with each new segment, need to write on PLC the desired target value, then need to monitor every x amount seconds
            // need to constantly monitor the values of the PLC for the running segment(maybe on separate thread?, and maybe on separate OPC instance, unsure)

            //readOPCThread = new Thread(new ThreadStart(() =>
            //{
            //    OPCReadValues = new OPCUtil();
            //    if (OPCReadValues.Connect())
            //    {
            //        MessageBox.Show("Connected!");
            //        _eventAggregator.GetEvent<UpdatedSourceEvent>().Publish(new OPCObject("Set_Pt", newResult.ToString()));
            //    }

            //}));
            //readOPCThread.Start();


            //2-Get recipe segments that will be written onto the PLC(Need to access DB) and store as segment objects in list "Segments"
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                //string queryString = String.Format("SELECT * FROM RECIPESEGMENT INNER JOIN segment ON RECIPESEGMENT.ID_segment = segment.id INNER JOIN recipe ON RECIPESEGMENT.ID_recipe = recipe.id where recipe.recipe_name = '{0}' order by segment.segment_number", RecipeName);
                string queryString = String.Format("SELECT * FROM SEGMENTS INNER JOIN RECIPES on SEGMENTS.ID_recipe = recipes.id where recipes.recipe_name = '{0}' order by segment_number", RecipeName);

                OracleCommand command = new OracleCommand(queryString, connection);
                connection.Open();
                try
                {
                    using (OracleDataReader reader = command.ExecuteReader())
                    {
                        DataTable dataTable = new DataTable();
                        dataTable.Load(reader);

                        for (int i = 0; i < dataTable.Rows.Count; ++i)
                        {
                            Segments.Add(new Segment_Details
                            {
                                ID               = Convert.ToInt32(dataTable.Rows[i][0]),
                                Segment_Number   = dataTable.Rows[i][2].ToString(),
                                RAMP_SP          = dataTable.Rows[i][3].ToString(),
                                MIN_RAMP         = dataTable.Rows[i][4].ToString(),
                                MAX_RAMP         = dataTable.Rows[i][5].ToString(),
                                SOAK_SP          = dataTable.Rows[i][6].ToString(),
                                MIN_SOAK         = dataTable.Rows[i][7].ToString(),
                                MAX_SOAK         = dataTable.Rows[i][8].ToString(),
                                SOAK_TIME        = dataTable.Rows[i][9].ToString(),
                                LOW_TEMP_MODE_SP = dataTable.Rows[i][10].ToString(),
                                ALARM_TEMP_TH    = dataTable.Rows[i][11].ToString(),
                                LOW_TEMP_MODE_EN = Convert.ToChar(dataTable.Rows[i][12]),
                            });
                        }

                        //3-Update Running Segment fields
                        NbSegments            = Segments.Count().ToString();
                        CurrentRunningSegment = Segments[0];
                        RunningNb             = CurrentRunningSegment.Segment_Number;
                        RunningRemSegments    = (Int32.Parse(NbSegments) - Int32.Parse(RunningNb)).ToString();
                        RunningRampHrUI       = Segments[0].MAX_RAMP;
                        RunningRampMinUI      = Segments[0].MAX_RAMP;
                        SetPt       = Segments[0].RAMP_SP;
                        RunningSoak = Segments[0].SOAK_TIME;

                        RunningSegmentStatus purge = RunningSegmentStatus.Purge;
                        RunningStatusUI = purge.Description();

                        SegmentSummaryStates testEnCours = SegmentSummaryStates.CycleEnCours;
                        TitleMenuStatus = testEnCours.Description();

                        //4-Update Next Segment Fields
                        NextNb = (Int32.Parse(RunningNb) + 1).ToString();

                        if (Segments.Count > 1)
                        {
                            NextRampHr  = Segments[1].MAX_RAMP;
                            NextRampMin = Segments[1].MIN_RAMP;
                            NextSetPt   = Segments[1].RAMP_SP;
                            NextSoak    = Segments[1].SOAK_SP;
                        }
                        else
                        {
                            RunningRemSegments = "0";
                            NextNb             = "NULL";
                            NextRampHr         = "NULL";
                            NextRampMin        = "NULL";
                            NextSetPt          = "NULL";
                            NextSoak           = "NULL";
                        }
                    }
                }
                catch (Exception Ex)
                {
                    MessageBox.Show(Ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
        }