Ejemplo n.º 1
0
        public virtual CommandClass Clone(ISubscribeCollectionFactory iSubscribeCollectionFactory)
        {
            CommandClass ret = (CommandClass)MemberwiseClone();

            ret.Command = null;
            if (Command != null)
            {
                ret.Command = iSubscribeCollectionFactory.CreateCollection <Command>();
                foreach (var item in Command)
                {
                    Command c = item.Clone(iSubscribeCollectionFactory);
                    c.Parent = ret;
                    ret.Command.Add(c);
                }
            }

            ret.DefineSet = null;
            if (DefineSet != null)
            {
                ret.DefineSet = iSubscribeCollectionFactory.CreateCollection <DefineSet>();
                foreach (var item in DefineSet)
                {
                    DefineSet c = item.Clone(iSubscribeCollectionFactory);
                    c.Parent = ret;
                    ret.DefineSet.Add(c);
                }
            }
            return(ret);
        }
Ejemplo n.º 2
0
        public virtual DefineSet Clone(ISubscribeCollectionFactory iSubscribeCollectionFactory)
        {
            DefineSet ret = (DefineSet)MemberwiseClone();

            ret.Define = null;
            if (Define != null)
            {
                ret.Define = iSubscribeCollectionFactory.CreateCollection <Define>();
                foreach (var item in Define)
                {
                    Define c = item.Clone(iSubscribeCollectionFactory);
                    c.Parent = ret;
                    ret.Define.Add(c);
                }
            }
            return(ret);
        }
Ejemplo n.º 3
0
        private void ProcessParametersTextValue(IEnumerable <ParamValue> paramValues, CommandClass cmdClass)
        {
            ParamValue prevParamValue = null;

            foreach (var item in paramValues)
            {
                if (item.HasTextValue)
                {
                    break;
                }
                if (item.InnerValues != null)
                {
                    ProcessParametersTextValue(item.InnerValues, cmdClass);
                }
                if (item.ParamDefinition != null)
                {
                    if (item.ParamDefinition.Defines != null && cmdClass.DefineSet != null)
                    {
                        Collection <Define> defines = null;
                        DefineSet           dSet    = cmdClass.DefineSet.FirstOrDefault(x => x.Name == item.ParamDefinition.Defines);
                        if (dSet != null)
                        {
                            defines = dSet.Define;
                            bool isMultiarray =
                                dSet.Define.Aggregate(true, (current, d) => current & d.Define1 != null);
                            if (isMultiarray && prevParamValue != null)
                            {
                                if (prevParamValue.ByteValueList != null && prevParamValue.ByteValueList.Count > 0)
                                {
                                    var d = dSet.Define.FirstOrDefault(x => x.KeyId == prevParamValue.ByteValueList[0]);
                                    if (d != null)
                                    {
                                        defines = d.Define1;
                                    }
                                }
                            }
                        }
                        IEnumerable <string> range =
                            ParameterToString(item.ByteValueList, item.ParamDefinition.Type, defines);
                        foreach (var str in range)
                        {
                            item.TextValueList.Add(str);
                            item.HasTextValue = true;
                        }
                    }
                    else
                    {
                        var paramType = item.ParamDefinition != null ? item.ParamDefinition.Type : zwParamType.HEX;
                        IEnumerable <string> range = ParameterToString(item.ByteValueList, paramType, null);
                        foreach (var str in range)
                        {
                            item.TextValueList.Add(str);
                            item.HasTextValue = true;
                        }
                    }
                }
                else
                {
                    var paramType = item.ParamDefinition != null ? item.ParamDefinition.Type : zwParamType.HEX;
                    IEnumerable <string> range = ParameterToString(item.ByteValueList, paramType, null);
                    foreach (var str in range)
                    {
                        item.TextValueList.Add(str);
                        item.HasTextValue = true;
                    }
                }
                prevParamValue = item;
            }
        }