示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }