/// <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); }
public FormRegularItemNode(RegularItemNode regularNode = null) { InitializeComponent( ); RegularNode = regularNode; Icon = Util.GetWinformICon( ); }
} // 结果信息 private void userButton1_Click(object sender, EventArgs e) { // 检查数据输入 if (string.IsNullOrEmpty(textBox1.Text)) { MessageBox.Show("名称不能为空!"); textBox1.Focus( ); return; } if (!int.TryParse(textBox3.Text, out int index)) { MessageBox.Show("索引号输入的格式有误,请重新输入。"); textBox3.Focus( ); return; } if (index < 0) { MessageBox.Show("索引号不能小于0,请重新输入。"); textBox3.Focus( ); return; } if (!int.TryParse(textBox5.Text, out int typeLength)) { MessageBox.Show("数据长度输入错误。"); textBox5.Focus( ); return; } RegularNode = new RegularItemNode( ) { Name = textBox1.Text, Description = textBox2.Text, Index = index, RegularCode = ((RegularNodeTypeItem)comboBox1.SelectedItem).Code, TypeLength = typeLength, }; DialogResult = DialogResult.OK; }
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); } } } }