private List <OPCGroupConfig> GetOPCGroupsConfig(XmlNode opcServerNode) { List <OPCGroupConfig> groups = new List <OPCGroupConfig>(); foreach (XmlNode opcGroupNode in opcServerNode.ChildNodes) { OPCGroupConfig group = GetOPCGroupConfig(opcGroupNode); if (group != null) { groups.Add(group); } } return(groups); }
private OPCGroupConfig GetOPCGroupConfig(XmlNode opcGroupNode) { if (opcGroupNode == null) { return(null); } OPCGroupConfig group = new OPCGroupConfig(); group.GroupName = opcGroupNode.Attributes["groupname"].Value; group.IsActive = opcGroupNode.Attributes["isactive"].Value == "1"; group.IsSubscribed = opcGroupNode.Attributes["issubscribed"].Value == "1"; group.AutoInsert = opcGroupNode.Attributes["autoinsert"].Value == "1"; float deadband = 0; group.Deadband = float.TryParse(opcGroupNode.Attributes["deadband"].Value, out deadband) && deadband >= 0 ? deadband : 0; int updateRate = 0; group.UpdateRate = int.TryParse(opcGroupNode.Attributes["updaterate"].Value, out updateRate) && updateRate > 0 ? updateRate : 1000; int timeoutsetting = 0; group.TimeoutSetting = int.TryParse(opcGroupNode.Attributes["timeoutsetting"].Value, out timeoutsetting) && timeoutsetting >= 0 ? timeoutsetting : 0; foreach (XmlNode node in opcGroupNode.ChildNodes) { switch (node.LocalName) { case "opcitems": List <string> opcItems = GetOPCGroupItems(node); foreach (string opcItem in opcItems) { group.OPCItems.Add(opcItem); } break; case "database-connection": OPCGroupDatabaseConnectionConfig dbConnConfig = GetOPCDBConnectionConfig(node); group.DBConnection.DatabaseType = dbConnConfig.DatabaseType; group.DBConnection.ServerName = dbConnConfig.ServerName; group.DBConnection.DatabaseName = dbConnConfig.DatabaseName; group.DBConnection.UserName = dbConnConfig.UserName; group.DBConnection.Password = dbConnConfig.Password; group.DBConnection.NewDataTable = dbConnConfig.NewDataTable; group.DBConnection.HistoryDataTable = dbConnConfig.HistoryDataTable; group.DBConnection.Fields.Clear(); foreach (OPCGroupDatabaseFieldConfig field in dbConnConfig.Fields) { group.DBConnection.Fields.Add(field); } break; default: break; } } return(group); }