Example #1
0
 /// <summary>
 /// 从信号机取得所有的配时方案信息。
 /// </summary>
 /// <returns></returns>
 public static List<Pattern> GetPattern()
 {
     TscData td = (TscData)Application.Current.Properties[Define.TSC_DATA];
     byte[] byt = Udp.recvUdp(td.Node.sIpAddress, Define.GBT_PORT, Define.GET_PATTERN);
     if (!CheckGBT(byt, "配时方案"))
     {
         return null;
     }
     List<Pattern> listPattern = new List<Pattern>();
     //取得)
     byte[] arrayPattern = new byte[Convert.ToInt32(byt[3]) * Define.PATTERN_BYTE_SIZE];
     Array.Copy(byt, 4, arrayPattern, 0, Convert.ToInt32(byt[3]) * Define.PATTERN_BYTE_SIZE);
     byte[,] twoArray = ByteUtils.oneArray2TwoArray(arrayPattern, Convert.ToInt32(byt[3]), Define.PATTERN_BYTE_SIZE);
     Pattern obj;
     for (int i = 0; i < Convert.ToInt32(byt[3]); i++)
     {
         obj = new Pattern();
         obj.ucPatternId = twoArray[i, 0];
         obj.ucCycleTime = twoArray[i, 1];
         obj.ucOffset = twoArray[i, 2];
         obj.ucCoorPhase = twoArray[i, 3];
         obj.ucStagePatternId = twoArray[i, 4];
         listPattern.Add(obj);
     }
     return listPattern;
 }
Example #2
0
        private void setPatternAndStagePattern(List<Pattern> lp ,List<StagePattern> lsp , StageItem currentStage,PhaseToDirec ptd)
        {
            //半断是新增加stage还是,老的更新用的
            Pattern ptemp= null;
           // List<Pattern> lptemp = new List<Pattern>();
            bool newPattern = false;
            bool oldPattern = false;
            foreach(Pattern p in lp)
            {
               
                if (sldSchemeId.Value == p.ucPatternId )
                {
                    p.ucCoorPhase = Convert.ToByte(cbxCoordination.SelectedItem);
                    p.ucCycleTime = Convert.ToByte(tbxCycle.Text);
                    p.ucOffset = Convert.ToByte(tbxOffset.Text);
                    p.ucPatternId = Convert.ToByte(sldSchemeId.Value);
                    p.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                    oldPattern = true;
                    //if (sldStagePatternId.Value == p.ucStagePatternId)
                    //{
                    //    p.ucCoorPhase = Convert.ToByte(cbxCoordination.SelectedItem);
                    //    p.ucCycleTime = Convert.ToByte(tbxCycle.Text);
                    //    p.ucOffset = Convert.ToByte(tbxOffset.Text);
                    //    p.ucPatternId = Convert.ToByte(sldSchemeId.Value);
                    //    p.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                    //}
                    //else
                    //{
                       
                    //}
                    //p.ucPatternId = Convert.ToByte(sldSchemeId.Value);
                    //p.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                    //ptemp = null;
                }
                else
                {
                    newPattern = true;
                }
            
            }
            if (!oldPattern)
            {
                if (newPattern)
                {
                    ptemp = new Pattern();
                    ptemp.ucCoorPhase = Convert.ToByte(cbxCoordination.SelectedItem);
                    ptemp.ucCycleTime = Convert.ToByte(tbxCycle.Text);
                    ptemp.ucOffset = Convert.ToByte(tbxOffset.Text);
                    ptemp.ucPatternId = Convert.ToByte(sldSchemeId.Value);
                    ptemp.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                    lp.Add(ptemp);
                }
               
            }
            //if (!lp.Contains(ptemp))//这里主要 是,新的方案号需要增加。旧的方案,不用进行增加,
            //{
                
            //}
           
            

            foreach (StagePattern sp in lsp)
            {
                if (sp.ucStagePatternId == sldStagePatternId.Value)
                {
                    
                    if (sp.ucStageNo == Convert.ToByte(currentStage.lblNumber.Content))
                    {
                        sp.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                        sp.ucStageNo = Convert.ToByte(currentStage.lblNumber.Content);
                        sp.ucGreenTime = Convert.ToByte(sldGreenTime.Value);
                        sp.ucYellowTime = Convert.ToByte(sldYellowTime.Value);
                        sp.ucRedTime = Convert.ToByte(sldRedTime.Value);
                        sp.ucOption = returnReactionTrueOrFalse();
                        sp.usAllowPhase = returnAllowPhase(ptd.ucPhase, sp.usAllowPhase);
                        Console.WriteLine(sp.usAllowPhase);
                        break;
                    }
                    else if(sp.ucStageNo == 0)
                    {
                        sp.ucStagePatternId = Convert.ToByte(sldStagePatternId.Value);
                        sp.ucStageNo = Convert.ToByte(currentStage.lblNumber.Content);
                        sp.ucGreenTime = Convert.ToByte(sldGreenTime.Value);
                        sp.ucYellowTime = Convert.ToByte(sldYellowTime.Value);
                        sp.ucRedTime = Convert.ToByte(sldRedTime.Value);
                        sp.ucOption = returnReactionTrueOrFalse();
                        sp.usAllowPhase = returnAllowPhase(ptd.ucPhase, sp.usAllowPhase);
                        Console.WriteLine(sp.usAllowPhase);
                        break;
                    }
                    else
                    {
                        //MessageBox.Show("研发专用,程序异常。没有进行stage,stageNo 不为0,也不为小图上的编号\n");
                    }
                }
            }
               
        }