public XmlNode GenerateXmlNode() { XmlDocument xml = new XmlDocument(); XmlNode node = xml.CreateElement("Device"); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "Name", Name)); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "T133LeafID", T133LeafID.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "T216LeafID", T216LeafID.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "T107LeafID", T107LeafID.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "PLCType", PLCType.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "DBType", DBType.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "DBNumber", DBNumber.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "CycleReadMode", CycleReadMode.ToString())); node.Attributes.Append(XMLHelper.CreateAttribute(xml, "SplitterTime", SplitterTime.ToString())); node.AppendChild(xml.ImportNode(BelongPLC.GenerateXmlNode(), true)); foreach (GroupEntity group in Groups) { node.AppendChild(xml.ImportNode(group.GenerateXmlNode(), true)); } return(node); }
public DeviceEntity( XmlNode node, ProductionLineEntity parent, AddToWholeEntityQueueHandler addToWholeEntityQueueHandler) : this(parent) { this.addToWholeEntityQueueHandler = addToWholeEntityQueueHandler; #region 从Xml节点属性中获取属性值 if (node.Attributes["Name"] != null) { Name = node.Attributes["Name"].Value; } if (node.Attributes["T133LeafID"] != null) { if (int.TryParse(node.Attributes["T133LeafID"].Value, out int rlt)) { T133LeafID = rlt; } } if (node.Attributes["T216LeafID"] != null) { if (int.TryParse(node.Attributes["T216LeafID"].Value, out int rlt)) { T216LeafID = rlt; } } if (node.Attributes["T107LeafID"] != null) { if (int.TryParse(node.Attributes["T107LeafID"].Value, out int rlt)) { T107LeafID = rlt; } } if (node.Attributes["DBType"] != null) { try { DBType = (SiemensRegisterType)Enum.Parse( typeof(SiemensRegisterType), node.Attributes["DBType"].Value); } catch { string enumValues = ""; foreach (var value in Enum.GetValues(typeof(SiemensRegisterType))) { enumValues += $"[{value}]"; } throw new Exception( $"{node.Name}.{Name}节点中[DBType]属性值错误,只支持[{enumValues}]"); } } if (node.Attributes["DBNumber"] != null) { if (int.TryParse(node.Attributes["DBNumber"].Value, out int rlt)) { DBNumber = rlt; } } if (node.Attributes["CycleReadMode"] != null) { try { CycleReadMode = (CycleReadMode)Enum.Parse( typeof(CycleReadMode), node.Attributes["CycleReadMode"].Value); } catch { string enumValues = ""; foreach (var value in Enum.GetValues(typeof(CycleReadMode))) { enumValues += $"[{value}]"; } throw new Exception( $"{node.Name}.{Name}节点中[CycleReadMode]属性值错误,只支持[{enumValues}]"); } } if (node.Attributes["PLCType"] != null) { try { PLCType = (PLCType)Enum.Parse( typeof(PLCType), node.Attributes["PLCType"].Value); } catch { string enumValues = ""; foreach (var value in Enum.GetValues(typeof(PLCType))) { enumValues += $"[{value}]"; } throw new Exception( $"{node.Name}.{Name}节点中[PLCType]属性值错误,只支持[{enumValues}]"); } } if (node.Attributes["SplitterTime"] != null) { if (int.TryParse(node.Attributes["SplitterTime"].Value, out int rlt)) { SplitterTime = rlt; } } #endregion XmlNode childNode = node.FirstChild; while (childNode != null) { if (childNode.Name == "PLC") { BelongPLC.LoadFromXmlNode(childNode); } else if (childNode.Name == "TagGroup") { try { GroupEntity group = new GroupEntity(childNode, this); if (group != null) { Groups.Add(group); } } catch (Exception error) { XtraMessageBox.Show( error.Message, "出错啦", MessageBoxButtons.OK); } } childNode = childNode.NextSibling; } }