private void ReadAllTables() { string sTablesXML = "<tables>"; int iCurrentTableNumber = 0; bool bStartFound = false; // Read tables foreach (string sLine in m_sHeaderFile) { int iCommaPos = sLine.IndexOf(','); int iEqualPos = sLine.IndexOf('='); if (sLine.ToUpper().Contains("eStdT00_GenConfig".ToUpper())) { bStartFound = true; } if (bStartFound) { if (sLine.Contains("}")) { break; } if (iCommaPos > 0 && (iCommaPos < iEqualPos || iEqualPos == -1)) { sTablesXML += "<table Number='" + iCurrentTableNumber.ToString() + "'>" + sLine.Substring(0, iCommaPos).Trim() + "</table>\r\n"; stTableID table = new stTableID(); table.sName = sLine.Substring(0, iCommaPos).Trim(); table.iValue = iCurrentTableNumber; m_AllTablesID.Add(table); iCurrentTableNumber++; } else if (iEqualPos > 0) { if (sLine.Contains("ANSI_MANFCT_TABLE_OFFSET")) { iCurrentTableNumber = 2048; } else if (sLine.Contains("ANSI_KF_CLASS_TABLE_OFFSET+140")) { iCurrentTableNumber = 2148 + 140; } else if (sLine.Contains("ANSI_KF_CLASS_TABLE_OFFSET")) { iCurrentTableNumber = 2148; } sTablesXML += "<table Number='" + iCurrentTableNumber.ToString() + "'>" + sLine.Substring(0, iEqualPos).Trim() + "</table>\r\n"; stTableID table = new stTableID(); table.sName = sLine.Substring(0, iEqualPos).Trim(); table.iValue = iCurrentTableNumber; m_AllTablesID.Add(table); iCurrentTableNumber++; } else { // Unable to process line iCurrentTableNumber = 0; } } } sTablesXML += "</tables>"; }
/// <summary> /// Loads a previously saved xml configuration that describes all the tables in a meter /// </summary> /// <param name="sFileName"></param> public void LoadXML(string sFileName) { XmlDocument docXML = new XmlDocument(); docXML.Load(sFileName); m_Defines.Clear(); foreach (XmlNode node in docXML.SelectNodes("OpticalInterface/Defines/Define")) { stDefine newDefine = new stDefine(); newDefine.sName = node.SelectSingleNode("Name").InnerText; newDefine.iValue = int.Parse(node.SelectSingleNode("Value").InnerText); m_Defines.Add(newDefine); } m_AllTablesID.Clear(); foreach (XmlNode node in docXML.SelectNodes("OpticalInterface/AllTables/Table")) { stTableID newTable = new stTableID(); newTable.sName = node.SelectSingleNode("Name").InnerText; newTable.iValue = int.Parse(node.SelectSingleNode("Value").InnerText); m_AllTablesID.Add(newTable); } m_SupportedTables.Clear(); foreach (XmlNode node in docXML.SelectNodes("OpticalInterface/SupportedTables/SupportedTable")) { stTable newTable = new stTable(); newTable.sName = node.SelectSingleNode("Name").InnerText; newTable.sStructure = node.SelectSingleNode("StructureName").InnerText; m_SupportedTables.Add(newTable); } m_TableStructures.Clear(); foreach (XmlNode node in docXML.SelectNodes("OpticalInterface/Tables/Table")) { stTableStructure newTable = new stTableStructure(); newTable.sFields = new List<string>(); newTable.sFieldsType = new List<string>(); newTable.sDescription = new List<string>(); newTable.sStructureName = node.SelectSingleNode("Name").InnerText; newTable.bBitField = bool.Parse(node.SelectSingleNode("BitField").InnerText); foreach (XmlNode fieldnode in node.SelectNodes("Fields/Field")) { newTable.sFields.Add(fieldnode.SelectSingleNode("Name").InnerText); newTable.sFieldsType.Add(fieldnode.SelectSingleNode("Type").InnerText); newTable.sDescription.Add(fieldnode.SelectSingleNode("Description").InnerText); } m_TableStructures.Add(newTable); } }