/// <summary> /// /// </summary> /// <param name="input"> /// "\"NodeLayerModules\" STRING ;" /// "\"GenSigStartValue\" INT -2147483648 2147483647;" /// "\"ModeTransmission\" ENUM \"P\",\"E\",\"P+E\";" /// </param> /// <returns></returns> public AttributeDefinitionObjectItem Parse(string input) { string temp = input.Trim(';', ' '); string[] array = temp.Split('"'); Name = array[1]; if (temp.Contains("STRING")) { AttributeType = new AttributeStringDefinition(); } else if (temp.Contains("INT")) { temp = array[2].Trim(); array = temp.Split(' '); AttributeType = new AttributeIntegerDefinition(DbcDatabase.ParseStringToInt32(array[1]), DbcDatabase.ParseStringToInt32(array[2])); } else if (temp.Contains("ENUM")) { AttributeType = new AttributeEnumDefinition(); for (int i = 3; i < array.Length; i += 2) { (AttributeType as AttributeEnumDefinition).Items.Add(array[i]); } } return(this); }
/// <summary> /// /// </summary> /// <param name="input">"CM_ SG_ 4 EM_State_Signal \"Jel megjegyzés\";"</param> /// <returns></returns> public DbcSignalCommentItem Parse(string input) { string[] array = input.Split(' '); ArbitrationId = DbcDatabase.ParseStringToInt32(array[2]); Name = array[3]; Comment = input.Substring(input.IndexOf('"')).Trim(new char[] { ';', ' ', '"' }); return(this); }
/// <summary> /// /// </summary> /// <param name="input">CM_ BO_ 2 "Single Line Comment";</param> /// <returns></returns> public DbcMessageCommentItem Parse(string input) { string remain = input.Substring("CM_ BO_".Length).Trim(' '); ArbitrationId = DbcDatabase.ParseStringToInt32(remain.Substring(0, remain.IndexOf('"')).Trim(' ')); Comment = remain.Substring(remain.IndexOf('"')).Trim(new char[] { '"', ';' }); return(this); }
/// <summary> /// /// </summary> /// <param name="input">"BA_ \"GenSigStartValue\" SG_ 31 REVCCEN_SER 1;"</param> /// <returns></returns> public SignalAttributeValueObjectItem Parse(string input) { string temp = input.Substring("BA_".Length).Trim(' ', ';'); string[] array = temp.Split('"'); Name = array[1]; temp = array[2]; array = temp.Split(' '); ID = DbcDatabase.ParseStringToInt32(array[2]); SignalName = array[3]; Value = array[4]; return(this); }
/// <summary> /// /// </summary> /// <param name="input"> /// "BO_ 143 ERROR_INDICATORS_1: 8 DGT" /// </param> /// <returns></returns> public MessageObjectItem Parse(string input) { string reamin = string.Empty; string[] array = input.Split(' '); int offset = 0; if (array[offset++] == "BO_") { ArbitrationId = DbcDatabase.ParseStringToInt32(array[offset++]); Name = array[offset++].Trim(new char[] { ' ', ':' }); Size = DbcDatabase.ParseStringToInt32(array[offset++]); for (; offset < array.Length; offset++) { TransmitterNodes.Names.Add(array[offset]); } } return(this); }
/// <summary> /// /// </summary> /// <param name="input">Sample: "BO_TX_BU_ 1 : DEMO_NODE,OMRON_NODE,PC_NODE;"</param> /// <returns></returns> public MessageTransmittersObject Parse(string input) { input = input.Trim(';'); string[] array = null; if (input.Contains("BO_TX_BU_")) { /*left*/ array = input.Split(':'); ArbitrationId = DbcDatabase.ParseStringToInt32(array[0].Split(' ')[1]); /*right*/ array[1] = array[1].Trim(' '); foreach (string name in array[1].Split(',')) { TransmitterNames.Add(name); } } return(this); }
/// <summary> /// /// </summary> /// <param name="input"> /// "VAL_TABLE_ ValueTableItem1 3 \"Érték leírása 0x03\" 2 \"Érték leírása 0x02\" 1 \"Érték leírása 0x01\" 0 \"Érték leírása\" ;" /// </param> /// <returns></returns> public ValueTableObjectItem Parse(string input) { string remain = string.Empty; string[] array = input.Split(' '); if ("VAL_TABLE_" == array[0]) { remain = input.Substring("VAL_TABLE_".Length); Name = remain.Split(' ')[1]; remain = remain.Substring(Name.Length + 1).Trim(' '); array = remain.Split('"'); for (int i = 0; i < (array.Length - 1); i += 2) { Descriptions.Add(new ValueDescriptionItem(DbcDatabase.ParseStringToInt32(array[i]), array[i + 1])); } } return(this); }
/// <summary> /// /// </summary> /// <param name="input">Sample: "VAL_ 31 DMD_DARK 0 "pas de demande" 1 "Dark 0 demandé" 2 "Dark 2 demandé" 3 "Invalide" ;"</param> /// <returns></returns> public SignalValueDescriptionsItem Parse(string input) { string remain = string.Empty; string[] array = input.Split(' '); if ("VAL_" == array[0]) { remain = input.Substring("VAL_".Length); string arbIdStr = remain.Split(' ')[1]; ArbitrationId = DbcDatabase.ParseStringToInt32(arbIdStr); Name = remain.Split(' ')[2]; remain = remain.Substring(Name.Length + arbIdStr.Length + 2).Trim(new char[] { ' ', ';' }); array = remain.Split('"'); for (int i = 0; i < ((array.Length - 1)); i += 2) { Descriptions.Add(new ValueDescriptionItem(DbcDatabase.ParseStringToInt32(array[i]), array[i + 1])); } } return(this); }
/// <summary>http://www.thewindowsclub.com/enable-old-windows-clock-calendar-windows-10 /// /// </summary> /// <param name="input"> /// "SG_ COUNT_LINE_FAULT_ERRORS_MAX M : 55|16@0+ (1,0) [0|65535] \"ms\" PC" /// "SG_ DATATION_APPUI_3 : 39|16@0+ (0.1,0) [0|6553.5] \"ms 1\" PC" /// </param> /// <returns></returns> public SignalItemObject Parse(string input) { int offset = 0; string[] array; if (input.Contains("SG_")) { /*LEFT:*/ /*Name,MultiplesxerIndicator*/ string left = input.Substring(0, input.IndexOf(':')).Trim(' '); array = left.Split(' '); Name = array[++offset]; if (array.Length >= offset + 2) { MultiplesxerIndicator = array[++offset]; } else { MultiplesxerIndicator = string.Empty; } /*:RIGHT*/ string right = input.Substring(input.IndexOf(':') + 1).Trim(' '); /*Unit*/ offset = 0; array = null; string temp = string.Empty; temp = right.Substring(right.IndexOf('"') + 1); if (temp.Contains('"')) { Unit = temp.Substring(0, temp.IndexOf('"')); } else { Unit = string.Empty; } /*Minimum, Maximum*/ offset = 0; array = null; temp = string.Empty; temp = right.Substring(right.IndexOf('[') + 1, right.IndexOf(']') - right.IndexOf('[') - 1); array = temp.Split('|'); Minimum = DbcDatabase.ParseStringToDouble(array[offset++]); Maximum = DbcDatabase.ParseStringToDouble(array[offset++]); /*Factor, Offset*/ offset = 0; array = null; temp = string.Empty; temp = right.Substring(right.IndexOf('(') + 1, right.IndexOf(')') - right.IndexOf('(') - 1); array = temp.Split(','); Factor = DbcDatabase.ParseStringToDouble(array[offset++]); Offset = DbcDatabase.ParseStringToDouble(array[offset++]); /*StartBit, SignalSize, ByteOrder, ValueType*/ StartBit = DbcDatabase.ParseStringToInt32(right.Substring(0, right.IndexOf('|'))); SignalSize = DbcDatabase.ParseStringToInt32(right.Substring(right.IndexOf('|') + 1, input.IndexOf('@') - input.IndexOf('|') - 1)); ByteOrder = right.Substring(right.IndexOf('@') + 1, 1).ToCharArray()[0]; ValueType = right.Substring(right.IndexOf('@') + 2, 1).ToCharArray()[0]; /*Receiver node_name*/ ReceiverNodeName = right.Split(' ')[right.Split(' ').Length - 1]; } return(this); }