public NewSpeedWindow(IEventAggregator eventAggregator,
                              MsgSpeedCommand cmd, bool isCheck = false)
        {
            this.eventAggregator = eventAggregator;
            this.isCheck         = isCheck;

            MsgSpeedCommand speedCmd = new MsgSpeedCommand()
            {
            };

            speedCmd.Targets = new ObservableCollection <Target>();
            using (XmlReader reader = XmlReader.Create("AllTargets.xml"))
            {
                while (!reader.EOF)
                {
                    if (reader.MoveToContent() == XmlNodeType.Element && reader.Name == "target")
                    {
                        speedCmd.Targets.Add(new Target()
                        {
                            Name = reader.GetAttribute("name")
                        });
                    }
                    reader.Read();
                }
            }

            DataContext = speedCmd;

            InitializeComponent();

            if (isCheck)
            {
                GenerateCmdContent(cmd);
            }
        }
示例#2
0
 private async void ActivateSpeedCmd(MsgSpeedCommand cmd, string topic)
 {
     await Task.Run(() =>
     {
         IO.SendMsg(cmd, topic);
     });
 }
        /// <summary>
        /// 收到广播到本地的列控命令,加入缓存
        /// </summary>
        /// <param name="cmd"></param>
        private void CacheSpeedCmd(MsgSpeedCommand cmd)
        {
            UpdateCacheCmd(cmd);

            cmd.SpeedCmdState = SpeedCmdState.已拟定;
            ((AppVM)DataContext).SpeedCmds.Add(cmd);
            ((AppVM)DataContext).SpeedCmds = ((AppVM)DataContext).SpeedCmds;
        }
 /// <summary>
 /// 校验广播到本地的列控命令
 /// </summary>
 /// <param name="cmd"></param>
 private void CheckSpeedCmd(MsgSpeedCommand cmd)
 {
     // 非此命令编辑用户才能校验
     if (cmd.User != ConfigurationManager.ConnectionStrings["User"].ConnectionString)
     {
         NewSpeedWindow window = new NewSpeedWindow(eventAggregator, cmd, true);
         window.Show();
     }
 }
        /// <summary>
        /// 收到广播到本地的列控命令,置状态为已设置
        /// </summary>
        /// <param name="cmd"></param>
        private void ExecuteSpeedCmd(MsgSpeedCommand cmd)
        {
            var result = ((AppVM)DataContext).SpeedCmds.Where(i => i.CmdSN == cmd.CmdSN);

            if (result.Count() != 0)
            {
                result.First().SpeedCmdState = SpeedCmdState.已设置;
                ((AppVM)DataContext).SpeedCmds = ((AppVM)DataContext).SpeedCmds;
            }
        }
        /// <summary>
        /// 通过列控校验,并开始向网络广播
        /// </summary>
        /// <param name="cmd"></param>
        private void PassSpeedCmd(MsgSpeedCommand cmd)
        {
            int count = ((AppVM)DataContext).CachedCmds.Count +
                        ((AppVM)DataContext).SendingCmds.Count +
                        ((AppVM)DataContext).SendCmds.Count;

            cmd.CmdSN = (count + 1).ToString();
            cmd.Title = "列控指令";

            cmd.Category = MsgCategoryEnum.SpeedCache;
            SendCmd("DSIM.Command.SpeedCache", cmd);

            MessageBox.Show("完成校验,已缓存");
        }
        /// <summary>
        /// 生成网络命令的文本
        /// </summary>
        /// <param name="cmd"></param>
        private void GenerateCmdContent(MsgSpeedCommand cmd)
        {
            Height        = 650;
            Title         = "校验列控命令";
            TB.Visibility = Visibility.Visible;
            cmdFromNet    = cmd;

            var s = "";

            s += "命令类型:" + cmd.CmdType + "\n";
            s += "限速原因:" + cmd.Reason + "\n";
            s += "线路:" + cmd.RouteName + "\n";
            s += "公里标:" + "K" + cmd.BeginKMark1 + cmd.BeginKMark2 + " + " +
                 cmd.BeginKMark3 + cmd.BeginKMark4 + "-----" + "K" +
                 cmd.EndKMark1 + cmd.EndKMark2 + "+" +
                 cmd.EndKMark3 + cmd.EndKMark4 + "\n";
            s += "开始时间:" + (cmd.BeginNow ? "立即执行" : cmd.BeginTime) + "\n";
            s += "结束时间:" + (cmd.EndLasting ? "持久有效" : cmd.EndTime) + "\n";
            s += "限速值:" + cmd.LimitValue + "\n";
            s += "取消限速:" + cmd.IsCancel + "\n";

            TB.Text = s;
        }
 /// <summary>
 /// 广播列控命令等待校验
 /// </summary>
 /// <param name="cmd"></param>
 private void SendSpeedCmd(MsgSpeedCommand cmd)
 {
     cmd.Category = MsgCategoryEnum.CommandCheck;
     SendCmd("DSIM.Command.Check", cmd);
 }
 private bool CheckEquality(MsgSpeedCommand local, MsgSpeedCommand net)
 {
     if (local.EndTime != net.EndTime)
     {
         return(false);
     }
     if (local.BeginTime != net.BeginTime)
     {
         return(false);
     }
     if (local.IsCancel != net.IsCancel)
     {
         return(false);
     }
     if (local.LimitValue != net.LimitValue)
     {
         return(false);
     }
     if (local.EndKMark4 != net.EndKMark4)
     {
         return(false);
     }
     if (local.EndKMark3 != net.EndKMark3)
     {
         return(false);
     }
     if (local.EndKMark2 != net.EndKMark2)
     {
         return(false);
     }
     if (local.EndKMark1 != net.EndKMark1)
     {
         return(false);
     }
     if (local.BeginKMark4 != net.BeginKMark4)
     {
         return(false);
     }
     if (local.BeginKMark3 != net.BeginKMark3)
     {
         return(false);
     }
     if (local.BeginKMark2 != net.BeginKMark2)
     {
         return(false);
     }
     if (local.BeginKMark1 != net.BeginKMark1)
     {
         return(false);
     }
     if (local.RouteName != net.RouteName)
     {
         return(false);
     }
     if (local.CmdType != net.CmdType)
     {
         return(false);
     }
     if (local.Reason != net.Reason)
     {
         return(false);
     }
     if (local.EndLasting != net.EndLasting)
     {
         return(false);
     }
     return(true);
 }