Пример #1
0
        private void 添加简单圈选(F纯地图 __纯地图)
        {
            var __圈选 = new F圈选_圆形(__纯地图.地图);

            __圈选.圈选结束 += 处理圆形圈选;
            var __按钮 = new U按钮
            {
                Top  = 10,
                Left = 50,
                Text = "开始"
            };

            __按钮.Click += (sender1, e1) =>
            {
                if (__按钮.Text == "开始")
                {
                    __按钮.Text = "结束";
                    __圈选.开始();
                }
                else
                {
                    __按钮.Text = "开始";
                    __圈选.结束();
                    __圈选.清除();
                }
            };
            __纯地图.Controls.Add(__按钮);
            __按钮.BringToFront();
        }
Пример #2
0
        private void 添加简单圈选(F地图 __地图)
        {
            var __圈选 = new F圈选_圆形(__地图);

            __圈选.圈选结束 += 处理圆形圈选;
            var __按钮 = new U按钮
            {
                Width  = 70,
                Top    = 30,
                Left   = _F显示号码.out地图容器.Width - 116,
                Anchor = AnchorStyles.Right | AnchorStyles.Top,
                Text   = "开始圈选"
            };

            __按钮.Click += (sender1, e1) =>
            {
                if (__按钮.Text == "开始圈选")
                {
                    __按钮.Text = "结束圈选";
                    __圈选.开始();
                }
                else
                {
                    __按钮.Text = "开始圈选";
                    __圈选.结束();
                    __圈选.清除();
                }
            };
            _F显示号码.out地图容器.Controls.Add(__按钮);
            __按钮.BringToFront();
        }
Пример #3
0
        void do测距_Click(object sender, EventArgs e)
        {
            var __纯地图 = new F纯地图();
            var __测距  = new F测距(__纯地图.地图);
            var __按钮  = new U按钮
            {
                Top  = 10,
                Left = 50,
                Text = "开始"
            };

            __按钮.Click += (sender1, e1) =>
            {
                if (__按钮.Text == "开始")
                {
                    __按钮.Text = "结束";
                    __测距.开始();
                }
                else
                {
                    __按钮.Text = "开始";
                    __测距.结束();
                }
            };
            __纯地图.Controls.Add(__按钮);
            __按钮.BringToFront();
            var __空窗口 = new F空窗口(__纯地图, "测距");

            __空窗口.ShowDialog();
            __空窗口.Dispose();
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.out标题.Text = _设备列表[0].分组;
            this.out容器.Controls.Clear();
            _设备列表.ForEach(__设备 =>
            {
                var __按钮 = new U按钮
                {
                    大小  = new Size(170, 26),
                    Tag = __设备,
                    ContextMenuStrip = this.contextMenuStrip1,
                    Text             = __设备.设备标识,
                    颜色 = Color.Gray
                };
                __按钮.Click += 设备_Click;
                var __提示    = new StringBuilder();
                __提示
                .AppendFormat("IP:  {0}", __设备.IP).AppendLine()
                .AppendFormat("端口号:  {0}", __设备.端口号).AppendLine();
                this.toolTip1.SetToolTip(__按钮, __提示.ToString());
                this.out容器.Controls.Add(__按钮);

                __设备.访问入口      = FT通用访问工厂.创建客户端();
                __设备.访问入口.自动重连 = true;
                __设备.访问入口.已连接 += () => 访问入口_已连接(__设备, __按钮);
                __设备.访问入口.已断开 += q => 访问入口_已断开(__设备, __按钮);

                ThreadPool.QueueUserWorkItem((arg =>
                {
                    __设备.访问入口.连接(new IPEndPoint(__设备.IP, __设备.端口号));
                }));
            });
            this.do编辑设备.Click += do编辑设备_Click;
        }
        void _IB状态_健康状态变化(M设备 __设备, U按钮 __按钮, M概要状态 __概要状态)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new Action <M设备, U按钮, M概要状态>(_IB状态_健康状态变化), __设备, __按钮, __概要状态);
                return;
            }
            __设备.概要状态 = __概要状态;
            __按钮.Text = string.Format("{0}({1})", __设备.设备标识, __设备.概要状态.未清除告警数量);
            switch (__概要状态.健康状态)
            {
            case E健康状态.优:
                __按钮.颜色 = Color.YellowGreen;
                break;

            case E健康状态.良:
                __按钮.颜色 = Color.FromArgb(38, 164, 221);
                break;

            case E健康状态.中:
                __按钮.颜色 = Color.Orange;
                break;

            case E健康状态.差:
                __按钮.颜色 = Color.Red;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 void 访问入口_已断开(M设备 __设备, U按钮 __按钮)
 {
     if (this.InvokeRequired)
     {
         this.BeginInvoke(new Action <M设备, U按钮>(访问入口_已断开), __设备, __按钮);
         return;
     }
     __按钮.颜色 = Color.Gray;
 }
        void 访问入口_已连接(M设备 __设备, U按钮 __按钮)
        {
            if (this.InvokeRequired)
            {
                this.BeginInvoke(new Action <M设备, U按钮>(访问入口_已连接), __设备, __按钮);
                return;
            }
            if (__设备.片 == null)
            {
                var __IB名片 = new B名片_C(__设备.访问入口);
                var __IB状态 = new B状态_C(__设备.访问入口);
                __IB状态.健康状态变化 += q => _IB状态_健康状态变化(__设备, __按钮, q);

                var __任务 = new Task(() =>
                {
                    Let.Us.Retry(10000, 100, null, null).Do(() =>
                    {
                        __设备.片    = __IB名片.片;
                        __设备.概要状态 = __IB状态.查询概要状态();
                    });
                });
                __任务.ContinueWith(task =>
                {
                    var __提示 = new StringBuilder();
                    __提示
                    .AppendFormat("IP:  {0}", __设备.IP).AppendLine()
                    .AppendFormat("端口号:  {0}", __设备.端口号).AppendLine()
                    .AppendFormat("版本号:  {0}", __设备.片 == null ? "" : __设备.片.版本号).AppendLine()
                    .AppendFormat("版本时间:  {0}", __设备.片 == null ? "" : __设备.片.版本时间).AppendLine();
                    this.toolTip1.SetToolTip(__按钮, __提示.ToString());
                    _IB状态_健康状态变化(__设备, __按钮, __设备.概要状态);
                },
                                  CancellationToken.None, TaskContinuationOptions.OnlyOnRanToCompletion,
                                  TaskScheduler.FromCurrentSynchronizationContext());
                __任务.ContinueWith(task =>
                {
                    task.Exception.Handle(q => true);
                },
                                  CancellationToken.None, TaskContinuationOptions.OnlyOnFaulted,
                                  TaskScheduler.FromCurrentSynchronizationContext());

                __任务.Start();
            }
        }