/// <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); }
/// <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); }
public DataFieldPicker(string name, ReceivePart rp) { if (rp == null) { throw new ArgumentNullException("rp"); } this.Name = name; this._receivePard = rp; }
/// <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); }
/// <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; }