Beispiel #1
0
        public string MakeXml(SECS2_XML_MESSAGE _packet)
        {
            string sXml = "";

            XmlSerializer serializer = new XmlSerializer(typeof(SECS2_XML_MESSAGE));
            TextWriter    writer     = new StringWriter();

            serializer.Serialize(writer, _packet);
            sXml = writer.ToString();

            return(sXml);
        }
Beispiel #2
0
        public string MakeXml(SECS2_XML_MESSAGE _msg)
        {
            string sXml = "";

            if (_msg.HEAD.Stream == 2 && _msg.HEAD.Function == 41)
            {
                sXml = MakeXml_S2F41(_msg);
            }
            else if (_msg.HEAD.Stream == 6 && _msg.HEAD.Function == 12)
            {
                sXml = MakeXml_S6F12(_msg);
            }
            else
            {
                // error message 출력.
            }

            return(sXml);
        }
Beispiel #3
0
        public void ParseXml(string _sXml, ref SECS2_XML_MESSAGE _rPacket)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(SECS2_XML_MESSAGE));
            TextReader    reader     = new StringReader(_sXml);

            _rPacket = (SECS2_XML_MESSAGE)serializer.Deserialize(reader);

            /*
             *          SECS2_XML_MESSAGE aa = new SECS2_XML_MESSAGE();
             *
             *          _sXml = do_MakeXml_S2F41(aa);
             *
             *
             *          XmlDocument xml = new XmlDocument();
             *
             *          xml.LoadXml(_sXml);
             *
             *
             *
             *          XmlNodeList HEAD_IN = xml.GetElementsByTagName("HEAD");
             *          XmlNodeList BODY_IN = xml.GetElementsByTagName("BODY");
             *
             *          List<string> Vs = new List<string>();
             *
             *          int nS = 0, nF = 0;
             *          foreach (XmlNode node in HEAD_IN)
             *          {
             *              nS = Convert.ToInt32(node["Stream"].InnerText);
             *              // stream
             *              nF = Convert.ToInt32(node["Function"].InnerText);
             *              // function
             *          }
             *          // Head (@김성현)
             *
             *          // Body
             *          // s2f42, host command ack (@김성현)
             *          if (nS == 2 && nF == 42)
             *          {
             *              foreach (XmlNode node in BODY_IN)
             *              {
             *                  _rPacket.BODY.HCACK = Convert.ToInt32(node["HCACK"].InnerText);
             *              }
             *              // HCACK
             *          }
             *
             *          int CEID = 0;
             *          List<int> CPNAME = new List<int>();
             *          List<int> CPVALUE = new List<int>();
             *          List<int> REPORTID = new List<int>();
             *          // s6f11, event report (@김동우)
             *          if (nS == 6 && nF == 11)
             *          {
             *
             *              // BODY
             *              foreach (XmlNode node in BODY_IN)
             *              {
             *                  // CEID
             *                  CEID = int.Parse(node["CEID"].InnerText);
             *              }
             *              // REPORTS
             *              XmlNodeList REPORT_IN = xml.GetElementsByTagName("REPORT");
             *              foreach (XmlNode nodeReport in REPORT_IN)
             *              {
             *                  REPORTID.Add(Convert.ToInt32(nodeReport["REPORTID"].InnerText));
             *              }
             *              // REPORT
             *              {
             *                  // REPORTID
             *                  XmlNode nodeRPTID = nodeReport.SelectSingleNode("REPORTID");
             *                  _rPacket.BODY.REPORTS.REPORT.REPORTID = ushort.Parse(nodeRPTID.InnerText);
             *
             *                  // VARIABLES
             *                  XmlNodeList VARIABLS = nodeReport.SelectNodes("VARIABLES");
             *                  _rPacket.BODY.REPORTS.REPORT.VARIABLES = new string[VARIABLS.Count];
             *                  int _ii = 0;
             *                  foreach (XmlNode nodeV in VARIABLS)
             *                  {
             *                      // V
             *                      _rPacket.BODY.REPORTS.REPORT.VARIABLES[_ii++] = nodeV.InnerText;
             *                  }
             *              }
             *          }
             */
        }
Beispiel #4
0
        private string MakeXml_S2F41(SECS2_XML_MESSAGE _packet) // @김동우
        {
            string sXml = "";

            // 쓰기
            XmlDocument S2F41 = new XmlDocument();
            XmlNode     root  = S2F41.CreateElement("SECS2_XML_MESSAGE"); //PACKET

            XmlNode HEAD = S2F41.CreateElement("HEAD");                   // HEAD

            root.AppendChild(HEAD);
            XmlNode BODY = S2F41.CreateElement("BODY"); // BODY

            root.AppendChild(BODY);

            XmlNode SystemByte = S2F41.CreateElement("SystemByte"); // HEAD1

            SystemByte.InnerText = Convert.ToString(_packet.HEAD.SystemByte);
            XmlNode Cmd = S2F41.CreateElement("CMD"); // HEAD2

            Cmd.InnerText = Convert.ToString(_packet.HEAD.CMD);
            XmlNode Stream = S2F41.CreateElement("Stream"); // HEAD3

            Stream.InnerText = Convert.ToString(_packet.HEAD.Stream);
            XmlNode Function = S2F41.CreateElement("Function"); // HEAD4

            Function.InnerText = Convert.ToString(_packet.HEAD.Function);

            HEAD.AppendChild(SystemByte);
            HEAD.AppendChild(Cmd);
            HEAD.AppendChild(Stream);
            HEAD.AppendChild(Function);

            XmlNode RCMD = S2F41.CreateElement("RCMD"); // BODY1

            RCMD.InnerText = Convert.ToString(_packet.BODY.RCMD);
            XmlNode PARAMETERS = S2F41.CreateElement("PARAMETERS"); // BODY2

            BODY.AppendChild(RCMD);
            BODY.AppendChild(PARAMETERS);


            string Receive_Data = ""; // PARAMETERS.DATA

            Receive_Data = "4";       // 데이터 길이
            ArrayList ab = new ArrayList();

            for (int i = 0; i < Convert.ToInt32(Receive_Data); i++)    // PARAMETERS_IN
            {
                XmlNode CMD_PARAMi = S2F41.CreateElement("CMD_PARAM"); // PARAMETER
                PARAMETERS.AppendChild(CMD_PARAMi);
                XmlNode CPNAME = S2F41.CreateElement("CPNAME");        // CMD_PARAM 1
                CPNAME.InnerText = _packet.BODY.PARAMETERS[i].CPNAME;
                XmlNode CPVALUE = S2F41.CreateElement("CPVALUE");      // CMD_PARAM2
                CPVALUE.InnerText = _packet.BODY.PARAMETERS[i].CPVALUE;
                CMD_PARAMi.AppendChild(CPNAME);
                CMD_PARAMi.AppendChild(CPVALUE);
                ab.Add(CPNAME.InnerText);
                ab.Add(CPVALUE.InnerText);
            }

            S2F41.AppendChild(root);
            string S2F41_XML = S2F41.DocumentElement.OuterXml;


            // 읽기
            // PacketS
            XmlNodeList HEAD_IN     = S2F41.GetElementsByTagName("HEAD");
            XmlNodeList BODY_IN     = S2F41.GetElementsByTagName("BODY");
            XmlNodeList PARAMETERSS = S2F41.GetElementsByTagName("PARAMETERS");

            string        Sys   = "";
            string        CMd   = "";
            string        Str   = "";
            string        Fun   = "";
            string        Rcm   = "";
            List <string> Param = new List <string>();

            // Head
            foreach (XmlNode node in HEAD_IN)
            {
                Sys = node["SystemByte"].InnerText; // SystemBytem
                CMd = node["CMD"].InnerText;        // CMD
                Str = node["Stream"].InnerText;     // Stream
                Fun = node["Function"].InnerText;   // Fucntion
            }

            // Body
            foreach (XmlNode node in BODY_IN)
            {
                Rcm = node["RCMD"].InnerText;    // RCMD
            }
            foreach (XmlNode node in PARAMETERS) // PARAMETERS
            {
                // CMD_PARAM n개
                Param.Add(node["CPNAME"].InnerText);  // CPNAME
                Param.Add(node["CPVALUE"].InnerText); // CPVALUE
            }
            for (int w = 0; w < Param.Count; w++)
            {
                Console.WriteLine(Param[w]);
            }

            // PacketS
            {
                // Head
                {
                    // SystemBytem
                    // CMD
                    // Stream
                    // Fucntion
                }
                // Body
                {
                    // RCMD
                    // PARAMETERS
                    {
                        // CMD_PARAM n개
                        {
                            // CPNAME
                            // CPVALUE
                        }
                    }
                }
            }
            // return S2F41_XML;
            return(sXml);
        }
Beispiel #5
0
        public int LoadXml(string _sXml, ref SECS2_XML_MESSAGE _rVal)
        {
            int nErr = 0;

            XmlDocument xml = new XmlDocument();

            xml.LoadXml(_sXml);

            XmlNodeList HEAD_IN      = xml.GetElementsByTagName("HEAD");
            XmlNodeList BODY_IN      = xml.GetElementsByTagName("BODY");
            XmlNodeList REPORT_IN    = xml.GetElementsByTagName("REPORT");
            XmlNodeList VARIABLES_IN = xml.GetElementsByTagName("VARIABLES");

            List <string> Vs = new List <string>();

            int nS = 0, nF = 0;

            foreach (XmlNode node in HEAD_IN)
            {
                _rVal.HEAD.SystemByte = Convert.ToInt32(node["SystemByte"].InnerText);
                // systembyte
                _rVal.HEAD.CMD = Convert.ToInt32(node["CMD"].InnerText);
                // cmd
                _rVal.HEAD.Stream = Convert.ToInt32(node["Stream"].InnerText);
                // stream
                _rVal.HEAD.Function = Convert.ToInt32(node["Function"].InnerText);
                // function
            }
            // Head (@김성현)


            // Body
            // s2f42, host command ack (@김성현)
            if (nS == 2 && nF == 42)
            {
                foreach (XmlNode node in BODY_IN)
                {
                    _rVal.BODY.HCACK = Convert.ToInt32(node["HCACK"].InnerText);
                }
                // HCACK
            }

            // s6f11, event report (@김동우)
            if (nS == 6 && nF == 11)
            {
                foreach (XmlNode node in BODY_IN)
                {
                    _rVal.BODY.CEID = System.Text.Encoding.Default.GetBytes(node["CEID"].InnerText); // 그냥 byte였는데 byte[]로 바꿈
                }
                // CEID
                foreach (XmlNode node in REPORT_IN)
                {
                    _rVal.BODY.REPORTS = node["REPORTID"].InnerText; // string을 class로 변환?
                }
                // RPTID
                foreach (XmlNode node in VARIABLES_IN)
                {
                    Vs.Add(node["V"].InnerText);
                }
                if (Vs.Count > 0)
                {
                    for (int e = 0; e < Vs.Count; e++)
                    {
                        _rVal.BODY.REPORTS.REPORT.VARIABLES[e].V = Vs[e]; // v는 없으면 생성?
                    }
                }
                // Vs
            }
            return(nErr);
        }
Beispiel #6
0
        private string MakeXml_S6F12(SECS2_XML_MESSAGE _msg) // @신수영
        {
            string sXml = "";

            //쓰기
            XmlDocument S6F12 = new XmlDocument();

            XmlNode root = S6F12.CreateElement("SECS2_XML_MESSAGE");

            XmlNode HEAD = S6F12.CreateElement("HEAD");

            root.AppendChild(HEAD);
            XmlNode BODY = S6F12.CreateElement("BODY");

            root.AppendChild(BODY);

            XmlNode SystemByte = S6F12.CreateElement("SystemByte");

            SystemByte.InnerText = Convert.ToString(_msg.HEAD.SystemByte);
            XmlNode Cmd = S6F12.CreateElement("CMD");

            Cmd.InnerText = Convert.ToString(_msg.HEAD.CMD);
            XmlNode Stream = S6F12.CreateElement("Stream");

            Stream.InnerText = Convert.ToString(_msg.HEAD.Stream);
            XmlNode Function = S6F12.CreateElement("Function");

            Function.InnerText = Convert.ToString(_msg.HEAD.Stream);



            HEAD.AppendChild(SystemByte);
            HEAD.AppendChild(Cmd);
            HEAD.AppendChild(Stream);
            HEAD.AppendChild(Function);

            XmlNode Ackc6 = S6F12.CreateElement("ACKC6");

            Ackc6.InnerText = Convert.ToString(_msg.BODY.ACKC6);
            BODY.AppendChild(Ackc6);


            S6F12.AppendChild(root);

            string S6F12_XML = S6F12.DocumentElement.OuterXml;

            //읽기
            XmlNodeList HEAD_IN = S6F12.GetElementsByTagName("HEAD");
            XmlNodeList BODY_IN = S6F12.GetElementsByTagName("BODY");

            string Sys   = "";
            string CMd   = "";
            string Str   = "";
            string Fun   = "";
            string ACKC6 = "";

            // Head
            foreach (XmlNode node in HEAD_IN)
            {
                Sys = node["SystemByte"].InnerText; // SystemBytem
                CMd = node["CMD"].InnerText;        // CMD
                Str = node["Stream"].InnerText;     // Stream
                Fun = node["Function"].InnerText;   // Fucntion
            }

            // Body
            foreach (XmlNode node in BODY_IN)
            {
                ACKC6 = node["ACKC6"].InnerText; // ACKC6
            }


            return(sXml);
        }