private List<AliasMagicNrDesc> Parse_pf_Msg8(String network) { Dictionary<string, string> oteinstructions = ParseNetworkForOte(network); List<AliasMagicNrDesc> ret = new List<AliasMagicNrDesc>(); Regex iw; Regex r = new Regex(@"Pf_ExtOpMsg8\((?<fbi>\S+?),(?<ifw1>\d+?),(?<ifw2>\d+?),(?<ifw3>\d+?),(?<ifw4>\d+?),(?<ifw5>\d+?),(?<ifw6>\d+?),(?<ifw7>\d+?),(?<ifw8>\d+?),(?<zVar>\S+?)\)", RegexOptions.Singleline); Match msg8; msg8 = r.Match(network); string fbi = msg8.Groups["fbi"].Value; int[] IFW = new int[8]; IFW[0] = int.Parse(msg8.Groups["ifw1"].Value); IFW[1] = int.Parse(msg8.Groups["ifw2"].Value); IFW[2] = int.Parse(msg8.Groups["ifw3"].Value); IFW[3] = int.Parse(msg8.Groups["ifw4"].Value); IFW[4] = int.Parse(msg8.Groups["ifw5"].Value); IFW[5] = int.Parse(msg8.Groups["ifw6"].Value); IFW[6] = int.Parse(msg8.Groups["ifw7"].Value); IFW[7] = int.Parse(msg8.Groups["ifw8"].Value); //string pattern = string.Format("(XIC|XIO)\\((?<alias>\\S+)\\)\\sOTE\\({0}.IOM(?<nr>\\d)\\)", fbi); string pattern = string.Format(@"(XIC|XIO)\((?<alias>\S+)\)"); iw = new Regex(pattern, RegexOptions.Singleline); //Match aliasm = iw.Match(network); for (int i = 1; i < 9; i++) { string fbikey = string.Format("{0}.IOM{1}", fbi, i); if (!oteinstructions.ContainsKey(fbikey)) continue; Match logic = iw.Match(oteinstructions[fbikey]); if (logic.Success) { //int ifw = int.Parse(logic.Groups["nr"].Value); string alias = logic.Groups["alias"].Value; if (alias.ToLower() == "false") //IFW[ifw - 1] == 0 { logic = logic.NextMatch(); continue; } string desc = string.Empty; if (tags.ContainsKey(alias)) { desc = tags[alias]; } else { //desc = alias; System.Diagnostics.Debug.WriteLine(alias); } AliasMagicNrDesc retal = new AliasMagicNrDesc(alias, IFW[i - 1], desc, "S", oteinstructions[fbikey]); ret.Add(retal); } else { string instr = oteinstructions[fbikey]; instr = (!string.IsNullOrWhiteSpace(instr)) ? instr : fbikey; AliasMagicNrDesc retal = new AliasMagicNrDesc(oteinstructions[fbikey], IFW[i - 1], string.Empty, "S", instr); ret.Add(retal); } } //while (aliasm.Success) //{ // int ifw = int.Parse(aliasm.Groups["nr"].Value); // string alias = aliasm.Groups["alias"].Value; // if (alias.ToLower() == "false") //IFW[ifw - 1] == 0 // { // aliasm = aliasm.NextMatch(); // continue; // } // string desc = string.Empty; // if (tags.ContainsKey(alias)) // { // desc = tags[alias]; // } // else // { // System.Diagnostics.Debug.WriteLine(alias); // } // AliasMagicNrDesc retal = new AliasMagicNrDesc(alias, IFW[ifw - 1], desc, "S", string.Empty); // ret.Add(retal); // aliasm = aliasm.NextMatch(); //} return ret; }
private List<AliasMagicNrDesc> Parse_sf_OpBit16(String network) { Dictionary<string, string> bitinstructions = ParseNetworkForBit(network); List<AliasMagicNrDesc> ret = new List<AliasMagicNrDesc>(); Regex iw; Regex r = new Regex(@"Sf_OpBit16\((?<fbi>[^,]+),(?<int1>\d+),(?<int2>\d+),(?<int3>\d+),(?<int4>\d+),(?<int5>\d+),(?<int6>\d+),(?<int7>\d+),(?<int8>\d+),(?<int9>\d+),(?<int10>\d+),(?<int11>\d+),(?<int12>\d+),(?<int13>\d+),(?<int14>\d+),(?<int15>\d+),(?<int16>\d+),(?<zvar>[^,]+),(?<zgen>[^\)]+)\)", RegexOptions.Singleline); Match msg8; msg8 = r.Match(network); string fbi = msg8.Groups["fbi"].Value; int[] IFW = new int[16]; IFW[0] = int.Parse(msg8.Groups["int1"].Value); IFW[1] = int.Parse(msg8.Groups["int2"].Value); IFW[2] = int.Parse(msg8.Groups["int3"].Value); IFW[3] = int.Parse(msg8.Groups["int4"].Value); IFW[4] = int.Parse(msg8.Groups["int5"].Value); IFW[5] = int.Parse(msg8.Groups["int6"].Value); IFW[6] = int.Parse(msg8.Groups["int7"].Value); IFW[7] = int.Parse(msg8.Groups["int8"].Value); IFW[8] = int.Parse(msg8.Groups["int9"].Value); IFW[9] = int.Parse(msg8.Groups["int10"].Value); IFW[10] = int.Parse(msg8.Groups["int11"].Value); IFW[11] = int.Parse(msg8.Groups["int12"].Value); IFW[12] = int.Parse(msg8.Groups["int13"].Value); IFW[13] = int.Parse(msg8.Groups["int14"].Value); IFW[14] = int.Parse(msg8.Groups["int15"].Value); IFW[15] = int.Parse(msg8.Groups["int16"].Value); for (int i = 1; i < 17; i++) { string fbikey = string.Format("{0}.OpBit{1}", fbi, i); if (!bitinstructions.ContainsKey(fbikey)) continue; string output = bitinstructions[fbikey]; if (output != "Nop_0" || IFW[i - 1] != 0) { output = (output != "Nop_0") ? output : string.Empty; AliasMagicNrDesc retal = new AliasMagicNrDesc(output, IFW[i - 1], string.Empty, "S", bitinstructions[fbikey]); ret.Add(retal); } } return ret; }
private List<AliasMagicNrDesc> Parse_pf_Alarm8(String network) { Dictionary<string, string> oteinstructions = ParseNetworkForOte(network); List<AliasMagicNrDesc> ret = new List<AliasMagicNrDesc>(); Regex iw; Regex r = new Regex(@"Pf_Alarm8\((?<fbi>\S+?),(?<ifw1>\d+?),(?<ifw2>\d+?),(?<ifw3>\d+?),(?<ifw4>\d+?),(?<ifw5>\d+?),(?<ifw6>\d+?),(?<ifw7>\d+?),(?<ifw8>\d+?),(?<zVar>\S+?),(?<zGen>\S+?)\)", RegexOptions.Singleline); Match pf8; pf8 = r.Match(network); string fbi = pf8.Groups["fbi"].Value; if (fbi == "FBI_CD03_DC0344_DIMFM3") { //System.Diagnostics.Debugger.Break(); } int[] IFW = new int[8]; IFW[0] = int.Parse(pf8.Groups["ifw1"].Value); IFW[1] = int.Parse(pf8.Groups["ifw2"].Value); IFW[2] = int.Parse(pf8.Groups["ifw3"].Value); IFW[3] = int.Parse(pf8.Groups["ifw4"].Value); IFW[4] = int.Parse(pf8.Groups["ifw5"].Value); IFW[5] = int.Parse(pf8.Groups["ifw6"].Value); IFW[6] = int.Parse(pf8.Groups["ifw7"].Value); IFW[7] = int.Parse(pf8.Groups["ifw8"].Value); //string pattern = string.Format("(XIC|XIO)\\((?<alias>\\S+)\\)\\sOTE\\({0}.IFW(?<nr>\\d)\\)", fbi); string pattern = string.Format(@"(XIC|XIO)\((?<alias>\S+)\)"); iw = new Regex(pattern, RegexOptions.Singleline); //Match aliasm = iw.Match(network); for (int i = 1; i < 9; i++) { string fbikey = string.Format("{0}.IFW{1}", fbi, i); if (!oteinstructions.ContainsKey(fbikey)) continue; Match logic = iw.Match(oteinstructions[fbikey]); if (logic.Success) { //int ifw = int.Parse(logic.Groups["nr"].Value); string alias = logic.Groups["alias"].Value; if (alias.ToLower() == "true") //IFW[ifw - 1] == 0 { logic = logic.NextMatch(); continue; } bool checkestop = alias.Contains("ESTOP."); string desc = string.Empty; if (tags.ContainsKey(alias)) { desc = tags[alias]; } else if (checkestop) { string estopkey = alias.Substring(6, alias.Length - 6); if (estop.ContainsKey(estopkey)) { alias = estopkey; desc = estop[estopkey]; } else { System.Diagnostics.Debug.WriteLine(alias); } } else if (alias.Contains("_LifeBit")) { string[] split = alias.Split('.'); alias = split[0]; desc = "HMI Warning"; } else { //desc = alias; System.Diagnostics.Debug.WriteLine(alias); } AliasMagicNrDesc retal = new AliasMagicNrDesc(alias, IFW[i - 1], desc, "A", oteinstructions[fbikey]); ret.Add(retal); } else { string instr = oteinstructions[fbikey]; instr = (!string.IsNullOrWhiteSpace(instr)) ? instr : fbikey; AliasMagicNrDesc retal = new AliasMagicNrDesc(oteinstructions[fbikey], IFW[i - 1], string.Empty, "A", instr); ret.Add(retal); } } return ret; }