Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="deviceType"></param>
        /// <param name="operaNode"></param>
        /// <returns></returns>
        private static Opera CreateSimpleOpera(string deviceType, XmlNode operaNode)
        {
            XmlElement            e     = operaNode as XmlElement;
            Opera                 opera = null;
            SendPart              sp    = null;
            ReceivePartCollection rps   = new ReceivePartCollection();
            string                name  = GetAttribute(e, DeviceDefineNodeNames.OperaName);
            string                text  = GetAttribute(e, DeviceDefineNodeNames.OperaText, true);

            string args = GetAttribute(e, DeviceDefineNodeNames.OperaArgs, true);


            foreach (XmlNode node in operaNode.ChildNodes)
            {
                switch (node.Name)
                {
                case DeviceDefineNodeNames.SendPart:
                    sp = CreateSendPart(node);
                    break;

                case DeviceDefineNodeNames.ReceivePart:
                    ReceivePart rp = CreateReceivePart(node);
                    rps.Add(rp);
                    break;
                }
            }

            opera              = new Opera(deviceType, name, text, args);
            opera.SendPart     = sp;
            opera.ReceiveParts = rps;
            log.Info("Create opera '{0}', receivepart count '{1}'", name, rps.Count);
            return(opera);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        static internal ReceivePart CreateReceivePart(XmlNode receivePartNode)
        {
            XmlElement e        = receivePartNode as XmlElement;
            string     str      = XmlHelper.GetAttribute(e, DeviceDefineNodeNames.ReceivePartDataLength);
            int        rpLength = int.Parse(str);

            string name = XmlHelper.GetAttribute(e, DeviceDefineNodeNames.ReceivePartName, true);

            ReceivePart rp = new ReceivePart(name, rpLength);

            rp.DataFieldManager.CRCBegin = MyOperaFactory.GetCRCBegin(e);

            foreach (XmlNode node in receivePartNode.ChildNodes)
            {
                switch (node.Name)
                {
                case DeviceDefineNodeNames.DataField:
                    DataField df = MyOperaFactory.CreateDataField(node);
                    df.IsBytesVolatile = true;
                    rp.Add(df);
                    break;
                }
            }
            ICRCer crcer = MyOperaFactory.GetCRCer(receivePartNode);

            rp.DataFieldManager.CRCer = crcer;

            if (rp.DataFieldManager.CRCer == null &&
                rp.DataFieldManager.GetCRCDataField() != null)
            {
                throw new ConfigException("not exist CRCer");
            }
            return(rp);
        }
Beispiel #3
0
 public DataFieldPicker(string name, ReceivePart rp)
 {
     if (rp == null)
     {
         throw new ArgumentNullException("rp");
     }
     this.Name = name;
     this._receivePard = rp;
 }
Beispiel #4
0
 public DataFieldPicker(string name, ReceivePart rp)
 {
     if (rp == null)
     {
         throw new ArgumentNullException("rp");
     }
     this.Name         = name;
     this._receivePard = rp;
 }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="p"></param>
        /// <param name="name"></param>
        /// <param name="xmlNode"></param>
        /// <returns></returns>
        internal static IPicker CreatePicker(string deviceType, XmlNode xmlNode)
        {
            DataFieldPicker r = null;

            foreach (XmlNode node in xmlNode.ChildNodes)
            {
                string name = XmlHelper.GetAttribute(xmlNode, "name", false);
                switch (node.Name)
                {
                case DeviceDefineNodeNames.ReceivePart:
                    ReceivePart rp = CreateReceivePart(node);
                    //rps.Add(rp);
                    r = new DataFieldPicker(name, rp);
                    break;
                }
            }
            return(r);
        }
Beispiel #6
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="node"></param>
        /// <returns></returns>
        private static ReceivePart CreateReceivePart(XmlNode recievepartnode)
        {
            XmlElement e = recievepartnode as XmlElement;
            string str = GetAttribute(e, DeviceDefineNodeNames.ReceivePartDataLength);
            int rpLength = int.Parse(str);

            string name = GetAttribute(e, DeviceDefineNodeNames.ReceivePartName, true);

            ReceivePart rp = new ReceivePart(name, rpLength);
            rp.DataFieldManager.CRCBegin = GetCRCBegin(e);

            foreach (XmlNode node in recievepartnode.ChildNodes)
            {
                switch (node.Name)
                {
                    case DeviceDefineNodeNames.DataField:
                        DataField df = CreateDataField(node);
                        df.IsBytesVolatile = true;
                        rp.Add(df);
                        break;
                }
            }
            ICRCer crcer = GetCRCer(recievepartnode);
            rp.DataFieldManager.CRCer = crcer;

            if (rp.DataFieldManager.CRCer == null &&
                    rp.DataFieldManager.GetCRCDataField() != null)
            {
                throw new ConfigException("not exist CRCer");
            }
            return rp;
        }