private static void 初始化命令列表(M设备 __设备, E角色 __工程)
        {
            __设备.命令列表控件.Nodes.Clear();
            if (!__设备.访问入口.连接正常)
            {
                __设备.访问入口.连接(new IPEndPoint(__设备.IP, __设备.端口号));
                if (!Equals(__设备.IP, IPAddress.Loopback))
                {
                    Thread.Sleep(1000); //当前因为LINUX设备端有延时? 需要停顿一下才能发送
                }
            }
            var __对象列表 = __设备.访问入口.查询可访问对象().对象列表.Where(q => (q.角色 & __工程) == __工程).ToList();

            __对象列表.Sort((m, n) =>
            {
                if (m.分类.CompareTo(n.分类) != 0)
                {
                    return(m.分类.CompareTo(n.分类));
                }
                return(m.称.CompareTo(n.称));
            });
            var __分类节点 = new Dictionary <string, TreeNode>();

            __对象列表.ForEach(q =>
            {
                TreeNodeCollection __nodes;
                if (string.IsNullOrEmpty(q.分类))
                {
                    __nodes = __设备.命令列表控件.Nodes;
                }
                else
                {
                    if (!__分类节点.ContainsKey(q.分类))
                    {
                        __分类节点[q.分类] = __设备.命令列表控件.Nodes.Add(q.分类);
                    }
                    __nodes = __分类节点[q.分类].Nodes;
                }
                var __方法列表 = __设备.访问入口.查询对象明细(q.称).方法列表;
                __方法列表.ForEach(k =>
                {
                    if ((k.角色 & __工程) == __工程)
                    {
                        __nodes.Add(string.Format("{0}.{1}", q.称, k.称)).Tag = new Tuple <string, M方法>(q.称, k);
                    }
                });
            });
            __设备.命令列表控件.ExpandAll();
        }
Пример #2
0
        private void 初始化对象列表(M设备 __设备)
        {
            __设备.工程对象列表控件.Nodes.Clear();
            __设备.开发对象列表控件.Nodes.Clear();
            __设备.客户对象列表控件.Nodes.Clear();
            __设备.访问入口.连接(new IPEndPoint(__设备.IP, __设备.端口号));
            if (!Equals(__设备.IP, IPAddress.Loopback))
            {
                Thread.Sleep(1000); //当前因为LINUX设备端有延时? 需要停顿一下才能发送
            }
            var __对象列表 = __设备.访问入口.查询可访问对象();

            设置对象列表控件(__设备.工程对象列表控件, __对象列表, E角色.工程);
            设置对象列表控件(__设备.开发对象列表控件, __对象列表, E角色.开发);
            设置对象列表控件(__设备.客户对象列表控件, __对象列表, E角色.客户);
        }
 private static void 初始化命令列表(M设备 __设备, E角色 __工程)
 {
     __设备.命令列表控件.Nodes.Clear();
     if (!__设备.访问入口.连接正常)
     {
         __设备.访问入口.连接(new IPEndPoint(__设备.IP, __设备.端口号));
         if (!Equals(__设备.IP, IPAddress.Loopback))
         {
             Thread.Sleep(1000); //当前因为LINUX设备端有延时? 需要停顿一下才能发送
         }
     }
     var __对象列表 = __设备.访问入口.查询可访问对象().对象列表.Where(q => (q.角色 & __工程) == __工程).ToList();
     __对象列表.Sort((m, n) =>
     {
         if (m.分类.CompareTo(n.分类) != 0)
         {
             return m.分类.CompareTo(n.分类);
         }
         return m.名称.CompareTo(n.名称);
     });
     var __分类节点 = new Dictionary<string, TreeNode>();
     __对象列表.ForEach(q =>
     {
         TreeNodeCollection __nodes;
         if (string.IsNullOrEmpty(q.分类))
         {
             __nodes = __设备.命令列表控件.Nodes;
         }
         else
         {
             if (!__分类节点.ContainsKey(q.分类))
             {
                 __分类节点[q.分类] = __设备.命令列表控件.Nodes.Add(q.分类);
             }
             __nodes = __分类节点[q.分类].Nodes;
         }
         var __方法列表 = __设备.访问入口.查询对象明细(q.名称).方法列表;
         __方法列表.ForEach(k =>
         {
             if((k.角色 & __工程) == __工程)
             {
                 __nodes.Add(string.Format("{0}.{1}", q.名称, k.名称)).Tag = new Tuple<string, M方法>(q.名称, k);
             }
         });
     });
     __设备.命令列表控件.ExpandAll();
 }
Пример #4
0
        private void 加载设备(IPEndPoint __地址, string __名称 = "")
        {
            //加载对象
            _当前设备 = new M设备 {
                IP = __地址.Address, 端口号 = __地址.Port, 称 = __名称
            };
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.工程对象列表控件.ForeColor = Color.Red;
                _当前设备.开发对象列表控件.ForeColor = Color.Red;
                _当前设备.客户对象列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.工程对象列表控件.ForeColor = Color.Black;
                _当前设备.开发对象列表控件.ForeColor = Color.Black;
                _当前设备.客户对象列表控件.ForeColor = Color.Black;
            }));

            if (_当前设备.访问入口 == null)
            {
                _当前设备.工程对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                _当前设备.工程对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                _当前设备.工程对象列表控件.MouseDown            += TV_MouseDown;

                _当前设备.开发对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                _当前设备.开发对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                _当前设备.开发对象列表控件.MouseDown            += TV_MouseDown;

                _当前设备.客户对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                _当前设备.客户对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                _当前设备.客户对象列表控件.MouseDown            += TV_MouseDown;

                this.out对象列表容器.添加控件(_当前设备.工程对象列表控件);
                this.out对象列表容器.添加控件(_当前设备.开发对象列表控件);
                this.out对象列表容器.添加控件(_当前设备.客户对象列表控件);
                this.out对象列表容器.激活控件(_当前设备.工程对象列表控件);

                _当前设备.对象明细控件 = new UTab()
                {
                    Dock = DockStyle.Fill
                };
                this.out对象明细容器.添加控件(_当前设备.对象明细控件);
                this.out对象明细容器.激活控件(_当前设备.对象明细控件);
                var __通知控件 = new F监听事件()
                {
                    Dock = DockStyle.Fill
                };
                _当前设备.对象明细控件.添加("事件通知", __通知控件);

                _当前设备.访问入口        = FT通用访问工厂.创建客户端();
                _当前设备.访问入口.收到了事件 += q =>
                {
                    __通知控件.处理通知(q);
                };
                _当前设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                    }
                };
                _当前设备.访问入口.已连接 += __显示连接正常;
                初始化对象列表();
                __显示连接正常();
                //this.do工程.PerformClick();
                this.do客户_Click(this.do工程, EventArgs.Empty);
            }
            else
            {
                this.out对象明细容器.激活控件(_当前设备.对象明细控件);
                if (!_当前设备.访问入口.连接正常)
                {
                    初始化对象列表();
                    __显示连接正常();
                    if (_当前设备.视图 == E角色.工程)
                    {
                        this.do工程_Click(this.do工程, EventArgs.Empty);
                    }
                    if (_当前设备.视图 == E角色.开发)
                    {
                        this.do开发_Click(this.do开发, EventArgs.Empty);
                    }
                    if (_当前设备.视图 == E角色.客户)
                    {
                        this.do客户_Click(this.do开发, EventArgs.Empty);
                    }
                }
            }
        }
        void out设备列表_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //加载对象
            var __设备 = e.Node.Tag as M设备;
            if (__设备 == null)
            {
                return;
            }
            if (_当前设备节点 != null)
            {
                _当前设备节点.BackColor = Color.Gainsboro;
            }
            _当前设备节点 = e.Node;
            _当前设备节点.BackColor = Color.Yellow;
            this.out提示.Visible = false;
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                e.Node.ForeColor = Color.Red;
                __设备.命令列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                e.Node.ForeColor = Color.Black;
                __设备.命令列表控件.ForeColor = Color.Black;
            }));
            _当前设备 = __设备;
            if (__设备.访问入口 == null)
            {
                __设备.命令列表控件 = new TreeView { BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, HideSelection = false, ContextMenuStrip = this.out对象菜单 };
                __设备.命令列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.命令列表控件.MouseDown += TV_MouseDown;

                this.out命令列表容器.添加控件(__设备.命令列表控件);
                this.out命令列表容器.激活控件(__设备.命令列表控件);

                __设备.访问入口 = FT通用访问工厂.创建客户端();
                __设备.命令执行控件 = new F执行方法(__设备.访问入口) { Dock = DockStyle.Fill };
                this.out命令明细容器.添加控件(__设备.命令执行控件);
                this.out命令明细容器.激活控件(__设备.命令执行控件);

                __设备.访问入口.收到了通知 += q => __设备.命令执行控件.输出(string.Format("\r\n{0}  {1} [{2}] {3} 详细: {4}\r\n", DateTime.Now.ToLongTimeString(), q.重要性, q.对象, q.概要, q.详细));
                __设备.访问入口.收到了事件 += q => __设备.命令执行控件.输出(string.Format("\r\n{0}  收到事件: {1}\r\n", DateTime.Now.ToLongTimeString(),HJSON.序列化(q)));
                __设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                        __设备.命令执行控件.输出(string.Format("\r\n{0}  断开连接\r\n", DateTime.Now.ToLongTimeString()));
                    }
                };
                __设备.访问入口.已连接 += __显示连接正常;
                __设备.视图 = E角色.工程;
                do工程_Click(null, null);//设置样式
                __显示连接正常();
            }
            else
            {
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);
                this.out命令明细容器.激活控件(__设备.命令执行控件);
                if (__设备.视图 == E角色.工程)
                {
                    do工程_Click(null, null); //设置样式
                }
                else
                {
                    do开发_Click(null, null); //设置样式
                }
            }
        }
Пример #6
0
        void 加载设备(IPEndPoint __地址, string __名称 = "")
        {
            //加载对象
            var __设备 = new M设备 {
                IP = __地址.Address, 端口号 = __地址.Port, 称 = __名称
            };

            this.out提示.Visible  = false;
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                __设备.工程对象列表控件.ForeColor = Color.Red;
                __设备.开发对象列表控件.ForeColor = Color.Red;
                __设备.客户对象列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                __设备.工程对象列表控件.ForeColor = Color.Black;
                __设备.开发对象列表控件.ForeColor = Color.Black;
                __设备.客户对象列表控件.ForeColor = Color.Black;
            }));

            _当前设备 = __设备;
            if (__设备.访问入口 == null)
            {
                __设备.工程对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                __设备.工程对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.工程对象列表控件.MouseDown            += TV_MouseDown;

                __设备.开发对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                __设备.开发对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.开发对象列表控件.MouseDown            += TV_MouseDown;

                __设备.客户对象列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单
                };
                __设备.客户对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.客户对象列表控件.MouseDown            += TV_MouseDown;

                this.out对象列表容器.添加控件(__设备.工程对象列表控件);
                this.out对象列表容器.添加控件(__设备.开发对象列表控件);
                this.out对象列表容器.添加控件(__设备.客户对象列表控件);
                this.out对象列表容器.激活控件(__设备.工程对象列表控件);

                __设备.对象明细控件 = new UTab()
                {
                    Dock = DockStyle.Fill
                };
                this.out对象明细容器.添加控件(__设备.对象明细控件);
                this.out对象明细容器.激活控件(__设备.对象明细控件);
                var __通知控件 = new F通知()
                {
                    Dock = DockStyle.Fill
                };
                __设备.对象明细控件.添加("通知", __通知控件);

                __设备.访问入口        = FT通用访问工厂.创建客户端();
                __设备.访问入口.收到了通知 += __通知控件.处理通知;
                __设备.访问入口.收到了事件 += q => __通知控件.处理通知(new M通知 {
                    对象 = q.对象名称, 角色 = E角色.所有, 重要性 = "普通", 概要 = q.事件名称, 详细 = q.实参列表 == null ? "" : string.Join(",", q.实参列表.Select(k => string.Format("{0}:{1}", k.称, k.值)))
                });
                __设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                    }
                };
                __设备.访问入口.已连接 += __显示连接正常;
                初始化对象列表(__设备);
                __显示连接正常();
                //this.do工程.PerformClick();
                this.do客户_Click(this.do工程, EventArgs.Empty);
            }
            else
            {
                this.out对象明细容器.激活控件(__设备.对象明细控件);
                if (!__设备.访问入口.连接正常)
                {
                    初始化对象列表(__设备);
                    __显示连接正常();
                    if (__设备.视图 == E角色.工程)
                    {
                        this.do工程_Click(this.do工程, EventArgs.Empty);
                    }
                    if (__设备.视图 == E角色.开发)
                    {
                        this.do开发_Click(this.do开发, EventArgs.Empty);
                    }
                    if (__设备.视图 == E角色.客户)
                    {
                        this.do客户_Click(this.do开发, EventArgs.Empty);
                    }
                }
            }
        }
Пример #7
0
        private void 加载设备(IPEndPoint __地址, string __名称 = "")
        {
            //加载对象
            _当前设备 = new M设备 { IP = __地址.Address, 端口号 = __地址.Port, 名称 = __名称 };
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.命令列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.命令列表控件.ForeColor = Color.Black;
            }));
            if (_当前设备.访问入口 == null)
            {
                _当前设备.命令列表控件 = new TreeView
                {
                    BackColor = Color.WhiteSmoke,
                    BorderStyle = BorderStyle.None,
                    Dock = DockStyle.Fill,
                    ShowNodeToolTips = true,
                    HideSelection = false,
                    ContextMenuStrip = this.out对象菜单
                };
                _当前设备.命令列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                _当前设备.命令列表控件.MouseDown += TV_MouseDown;

                this.out命令列表容器.添加控件(_当前设备.命令列表控件);
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);

                _当前设备.访问入口 = FT通用访问工厂.创建客户端();
                _当前设备.命令执行控件 = new F执行方法(_当前设备.访问入口) { Dock = DockStyle.Fill };
                this.out命令明细容器.添加控件(_当前设备.命令执行控件);
                this.out命令明细容器.激活控件(_当前设备.命令执行控件);

                _当前设备.访问入口.收到了事件 +=
                    q =>
                        _当前设备.命令执行控件.输出(string.Format("\r\n{0}  收到事件: {1}\r\n", DateTime.Now.ToLongTimeString(),
                            HJSON.序列化(q)));
                _当前设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                        _当前设备.命令执行控件.输出(string.Format("\r\n{0}  断开连接\r\n", DateTime.Now.ToLongTimeString()));
                    }
                };
                _当前设备.访问入口.已连接 += __显示连接正常;
                _当前设备.视图 = E角色.客户;
                do客户_Click(null, null); //设置样式
                __显示连接正常();
            }
            else
            {
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);
                this.out命令明细容器.激活控件(_当前设备.命令执行控件);
                if (_当前设备.视图 == E角色.客户)
                {
                    do客户_Click(null, null);
                }
                if (_当前设备.视图 == E角色.工程)
                {
                    do工程_Click(null, null);
                }
                if (_当前设备.视图 == E角色.开发)
                {
                    do开发_Click(null, null);
                }
            }
        }
Пример #8
0
        private void 加载设备(IPEndPoint __地址, string __名称 = "")
        {
            //加载对象
            _当前设备 = new M设备 {
                IP = __地址.Address, 端口号 = __地址.Port, 称 = __名称
            };
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.命令列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                _当前设备.命令列表控件.ForeColor = Color.Black;
            }));

            if (_当前设备.访问入口 == null)
            {
                _当前设备.命令列表控件 = new TreeView
                {
                    BackColor        = Color.WhiteSmoke,
                    BorderStyle      = BorderStyle.None,
                    Dock             = DockStyle.Fill,
                    ShowNodeToolTips = true,
                    HideSelection    = false,
                    ContextMenuStrip = this.out对象菜单
                };
                _当前设备.命令列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                _当前设备.命令列表控件.MouseDown            += TV_MouseDown;

                this.out命令列表容器.添加控件(_当前设备.命令列表控件);
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);

                _当前设备.访问入口   = FT通用访问工厂.创建客户端();
                _当前设备.命令执行控件 = new F执行方法(_当前设备.访问入口)
                {
                    Dock = DockStyle.Fill
                };
                this.out命令明细容器.添加控件(_当前设备.命令执行控件);
                this.out命令明细容器.激活控件(_当前设备.命令执行控件);

                _当前设备.访问入口.收到了事件 +=
                    q =>
                    _当前设备.命令执行控件.输出(string.Format("\r\n{0}  收到事件: {1}\r\n", DateTime.Now.ToLongTimeString(),
                                                  HJSON.序列化(q)));
                _当前设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                        _当前设备.命令执行控件.输出(string.Format("\r\n{0}  断开连接\r\n", DateTime.Now.ToLongTimeString()));
                    }
                };
                _当前设备.访问入口.已连接 += __显示连接正常;
                _当前设备.视图        = E角色.客户;
                do客户_Click(null, null); //设置样式
                __显示连接正常();
            }
            else
            {
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);
                this.out命令明细容器.激活控件(_当前设备.命令执行控件);
                if (_当前设备.视图 == E角色.客户)
                {
                    do客户_Click(null, null);
                }
                if (_当前设备.视图 == E角色.工程)
                {
                    do工程_Click(null, null);
                }
                if (_当前设备.视图 == E角色.开发)
                {
                    do开发_Click(null, null);
                }
            }
        }
        void out设备列表_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //加载对象
            var __设备 = e.Node.Tag as M设备;

            if (__设备 == null)
            {
                return;
            }
            if (_当前设备节点 != null)
            {
                _当前设备节点.BackColor = Color.Gainsboro;
            }
            _当前设备节点             = e.Node;
            _当前设备节点.BackColor   = Color.Yellow;
            this.out提示.Visible  = false;
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                e.Node.ForeColor      = Color.Red;
                __设备.命令列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                e.Node.ForeColor      = Color.Black;
                __设备.命令列表控件.ForeColor = Color.Black;
            }));

            _当前设备 = __设备;
            if (__设备.访问入口 == null)
            {
                __设备.命令列表控件 = new TreeView {
                    BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, HideSelection = false, ContextMenuStrip = this.out对象菜单
                };
                __设备.命令列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.命令列表控件.MouseDown            += TV_MouseDown;

                this.out命令列表容器.添加控件(__设备.命令列表控件);
                this.out命令列表容器.激活控件(__设备.命令列表控件);

                __设备.访问入口   = FT通用访问工厂.创建客户端();
                __设备.命令执行控件 = new F执行方法(__设备.访问入口)
                {
                    Dock = DockStyle.Fill
                };
                this.out命令明细容器.添加控件(__设备.命令执行控件);
                this.out命令明细容器.激活控件(__设备.命令执行控件);

                __设备.访问入口.收到了通知 += q => __设备.命令执行控件.输出(string.Format("\r\n{0}  {1} [{2}] {3} 详细: {4}\r\n", DateTime.Now.ToLongTimeString(), q.重要性, q.对象, q.概要, q.详细));
                __设备.访问入口.收到了事件 += q => __设备.命令执行控件.输出(string.Format("\r\n{0}  收到事件: {1}\r\n", DateTime.Now.ToLongTimeString(), HJSON.序列化(q)));
                __设备.访问入口.已断开   += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                        __设备.命令执行控件.输出(string.Format("\r\n{0}  断开连接\r\n", DateTime.Now.ToLongTimeString()));
                    }
                };
                __设备.访问入口.已连接 += __显示连接正常;
                __设备.视图        = E角色.工程;
                do工程_Click(null, null);//设置样式
                __显示连接正常();
            }
            else
            {
                this.out命令列表容器.激活控件(_当前设备.命令列表控件);
                this.out命令明细容器.激活控件(__设备.命令执行控件);
                if (__设备.视图 == E角色.工程)
                {
                    do工程_Click(null, null); //设置样式
                }
                else
                {
                    do开发_Click(null, null); //设置样式
                }
            }
        }
Пример #10
0
        void 加载设备(IPEndPoint __地址, string __名称 = "")
        {
            //加载对象
            var __设备 = new M设备 { IP = __地址.Address, 端口号 = __地址.Port, 名称 = __名称 };
            this.out提示.Visible = false;
            this.do断开设备.Enabled = true;
            Action __显示连接异常 = () => this.BeginInvoke(new Action(() =>
            {
                __设备.工程对象列表控件.ForeColor = Color.Red;
                __设备.开发对象列表控件.ForeColor = Color.Red;
                __设备.客户对象列表控件.ForeColor = Color.Red;
            }));
            Action __显示连接正常 = () => this.BeginInvoke(new Action(() =>
            {
                __设备.工程对象列表控件.ForeColor = Color.Black;
                __设备.开发对象列表控件.ForeColor = Color.Black;
                __设备.客户对象列表控件.ForeColor = Color.Black;
            }));
            _当前设备 = __设备;
            if (__设备.访问入口 == null)
            {
                __设备.工程对象列表控件 = new TreeView { BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单 };
                __设备.工程对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.工程对象列表控件.MouseDown += TV_MouseDown;

                __设备.开发对象列表控件 = new TreeView { BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单 };
                __设备.开发对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.开发对象列表控件.MouseDown += TV_MouseDown;

                __设备.客户对象列表控件 = new TreeView { BackColor = Color.WhiteSmoke, BorderStyle = BorderStyle.None, Dock = DockStyle.Fill, ShowNodeToolTips = true, ContextMenuStrip = this.out对象菜单 };
                __设备.客户对象列表控件.NodeMouseDoubleClick += out对象列表_NodeMouseDoubleClick;
                __设备.客户对象列表控件.MouseDown += TV_MouseDown;

                this.out对象列表容器.添加控件(__设备.工程对象列表控件);
                this.out对象列表容器.添加控件(__设备.开发对象列表控件);
                this.out对象列表容器.添加控件(__设备.客户对象列表控件);
                this.out对象列表容器.激活控件(__设备.工程对象列表控件);

                __设备.对象明细控件 = new UTab() { Dock = DockStyle.Fill };
                this.out对象明细容器.添加控件(__设备.对象明细控件);
                this.out对象明细容器.激活控件(__设备.对象明细控件);
                var __通知控件 = new F通知() { Dock = DockStyle.Fill };
                __设备.对象明细控件.添加("通知", __通知控件);

                __设备.访问入口 = FT通用访问工厂.创建客户端();
                __设备.访问入口.收到了通知 += __通知控件.处理通知;
                __设备.访问入口.收到了事件 += q => __通知控件.处理通知(new M通知 { 对象 = q.对象名称, 角色= E角色.所有, 重要性 = "普通", 概要 = q.事件名称, 详细 = q.实参列表 == null ? "" : string.Join(",", q.实参列表.Select(k => string.Format("{0}:{1}", k.名称, k.值))) });
                __设备.访问入口.已断开 += __主动 =>
                {
                    if (!__主动)
                    {
                        __显示连接异常();
                    }
                };
                __设备.访问入口.已连接 += __显示连接正常;
                初始化对象列表(__设备);
                __显示连接正常();
                //this.do工程.PerformClick();
                this.do客户_Click(this.do工程, EventArgs.Empty);
            }
            else
            {
                this.out对象明细容器.激活控件(__设备.对象明细控件);
                if (!__设备.访问入口.连接正常)
                {
                    初始化对象列表(__设备);
                    __显示连接正常();
                    if (__设备.视图 == E角色.工程)
                    {
                        this.do工程_Click(this.do工程, EventArgs.Empty);
                    }
                    if (__设备.视图 == E角色.开发)
                    {
                        this.do开发_Click(this.do开发, EventArgs.Empty);
                    }
                    if (__设备.视图 == E角色.客户)
                    {
                        this.do客户_Click(this.do开发, EventArgs.Empty);
                    }
                }
            }
        }
Пример #11
0
 private void 初始化对象列表(M设备 __设备)
 {
     __设备.工程对象列表控件.Nodes.Clear();
     __设备.开发对象列表控件.Nodes.Clear();
     __设备.客户对象列表控件.Nodes.Clear();
     __设备.访问入口.连接(new IPEndPoint(__设备.IP, __设备.端口号));
     if (!Equals(__设备.IP, IPAddress.Loopback))
     {
         Thread.Sleep(1000); //当前因为LINUX设备端有延时? 需要停顿一下才能发送
     }
     var __对象列表 = __设备.访问入口.查询可访问对象();
     设置对象列表控件(__设备.工程对象列表控件, __对象列表, E角色.工程);
     设置对象列表控件(__设备.开发对象列表控件, __对象列表, E角色.开发);
     设置对象列表控件(__设备.客户对象列表控件, __对象列表, E角色.客户);
 }