Пример #1
0
        /// <summary>
        ///     解析一个配置文件中的所有的规则解析,并返回一个词典信息
        /// </summary>
        /// <param name="nodeClass">配置文件的根信息</param>
        /// <returns>词典</returns>
        public static Dictionary <string, List <RegularItemNode> > ParesRegular(XElement nodeClass)
        {
            var regularkeyValuePairs = new Dictionary <string, List <RegularItemNode> >();

            foreach (var xmlNode in nodeClass.Elements())
            {
                if (xmlNode.Attribute("Name").Value == "Regular")
                {
                    foreach (var element in xmlNode.Elements("RegularNode"))
                    {
                        var itemNodes = new List <RegularItemNode>();
                        foreach (var xmlItemNode in element.Elements("RegularItemNode"))
                        {
                            var regularItemNode = new RegularItemNode();
                            regularItemNode.LoadByXmlElement(xmlItemNode);
                            itemNodes.Add(regularItemNode);
                        }

                        if (regularkeyValuePairs.ContainsKey(element.Attribute("Name").Value))
                        {
                            regularkeyValuePairs[element.Attribute("Name").Value] = itemNodes;
                        }
                        else
                        {
                            regularkeyValuePairs.Add(element.Attribute("Name").Value, itemNodes);
                        }
                    }
                }
            }

            return(regularkeyValuePairs);
        }
Пример #2
0
        private void TreeNodeRender(TreeNode treeNode, XElement element)
        {
            foreach (var item in element.Elements())
            {
                if (item.Name == "NodeClass")
                {
                    var node = new TreeNode(item.Attribute("Name").Value);
                    node.ImageKey         = "Class_489";
                    node.SelectedImageKey = "Class_489";

                    var nodeClass = new NodeClass();
                    nodeClass.LoadByXmlElement(item);
                    node.Tag = nodeClass;
                    treeNode.Nodes.Add(node);

                    TreeNodeRender(node, item);
                }
                else if (item.Name == "DeviceNode")
                {
                    var type = int.Parse(item.Attribute("DeviceType").Value);

                    var deviceNode = new TreeNode(item.Attribute("Name").Value);
                    if (type == DeviceNode.ModbusTcpClient)
                    {
                        deviceNode.ImageKey         = "Module_648";
                        deviceNode.SelectedImageKey = "Module_648";

                        var modbusNode = new NodeModbusTcpClient();
                        modbusNode.LoadByXmlElement(item);
                        deviceNode.Tag = modbusNode;
                    }
                    else if (type == DeviceNode.ModbusTcpAlien)
                    {
                        deviceNode.ImageKey         = "Module_648";
                        deviceNode.SelectedImageKey = "Module_648";

                        var modbusAlien = new NodeModbusTcpAline();
                        modbusAlien.LoadByXmlElement(item);
                        deviceNode.Tag = modbusAlien;
                    }
                    else if (type == DeviceNode.MelsecMcQna3E)
                    {
                        deviceNode.ImageKey         = "Enum_582";
                        deviceNode.SelectedImageKey = "Enum_582";

                        var node = new NodeMelsecMc();
                        node.LoadByXmlElement(item);
                        deviceNode.Tag = node;
                    }
                    else if (type == DeviceNode.Siemens)
                    {
                        deviceNode.ImageKey         = "Event_594";
                        deviceNode.SelectedImageKey = "Event_594";

                        var node = new NodeSiemens();
                        node.LoadByXmlElement(item);
                        deviceNode.Tag = node;
                    }
                    else if (type == DeviceNode.DeviceNone)
                    {
                        deviceNode.ImageKey         = "Method_636";
                        deviceNode.SelectedImageKey = "Method_636";

                        var node = new NodeEmpty();
                        node.LoadByXmlElement(item);
                        deviceNode.Tag = node;
                    }
                    else if (type == DeviceNode.Omron)
                    {
                        deviceNode.ImageKey         = "HotSpot_10548_color";
                        deviceNode.SelectedImageKey = "HotSpot_10548_color";

                        var node = new NodeOmron();
                        node.LoadByXmlElement(item);
                        deviceNode.Tag = node;
                    }

                    treeNode.Nodes.Add(deviceNode);
                    foreach (var request in item.Elements("DeviceRequest"))
                    {
                        var deviceRequest = new DeviceRequest();
                        deviceRequest.LoadByXmlElement(request);
                        var parseCode = deviceRequest.PraseRegularCode;
                        if (regularkeyValuePairs.ContainsKey(parseCode))
                        {
                            foreach (var regularNodeItem in regularkeyValuePairs[parseCode])
                            {
                                var treeNodeRegular = new TreeNode(regularNodeItem.Name);
                                treeNodeRegular.ImageKey         = "Operator_660";
                                treeNodeRegular.SelectedImageKey = "Operator_660";


                                treeNodeRegular.Tag = regularNodeItem;
                                deviceNode.Nodes.Add(treeNodeRegular);
                            }
                        }
                    }
                }
                else if (item.Name == "ServerNode")
                {
                    var type = int.Parse(item.Attribute("ServerType").Value);

                    if (type == ServerNode.ModbusServer)
                    {
                        var node = new TreeNode(item.Attribute("Name").Value);
                        node.ImageKey         = "server_Local_16xLG";
                        node.SelectedImageKey = "server_Local_16xLG";

                        var nodeClass = new NodeModbusServer();
                        nodeClass.LoadByXmlElement(item);
                        node.Tag = nodeClass;
                        treeNode.Nodes.Add(node);
                    }
                    else if (type == ServerNode.AlienServer)
                    {
                        var node = new TreeNode(item.Attribute("Name").Value);
                        node.ImageKey         = "server_Local_16xLG";
                        node.SelectedImageKey = "server_Local_16xLG";

                        var nodeClass = new AlienServerNode();
                        nodeClass.LoadByXmlElement(item);
                        node.Tag = nodeClass;
                        treeNode.Nodes.Add(node);

                        TreeNodeRender(node, item);
                    }
                }
                else if (item.Name == "RegularNode")
                {
                    var node = new TreeNode(item.Attribute("Name").Value);
                    node.ImageKey         = "usbcontroller";
                    node.SelectedImageKey = "usbcontroller";

                    var nodeClass = new RegularNode();
                    nodeClass.LoadByXmlElement(item);
                    node.Tag = nodeClass;
                    treeNode.Nodes.Add(node);

                    foreach (var regularItemXml in item.Elements("RegularItemNode"))
                    {
                        var treeNodeRegular = new TreeNode(regularItemXml.Attribute("Name").Value);
                        treeNodeRegular.ImageKey         = "Operator_660";
                        treeNodeRegular.SelectedImageKey = "Operator_660";

                        var regularItemNode = new RegularItemNode();
                        regularItemNode.LoadByXmlElement(regularItemXml);
                        treeNodeRegular.Tag = regularItemNode;
                        node.Nodes.Add(treeNodeRegular);
                    }
                }
            }
        }