Ejemplo n.º 1
0
        /// <summary>
        /// Copies the template properties from the source template.
        /// </summary>
        public virtual void CopyFrom(DeviceTemplate srcTemplate)
        {
            if (srcTemplate == null)
            {
                throw new ArgumentNullException("srcTemplate");
            }

            // копирование настроек шаблона
            Sett.CopyFrom(srcTemplate.Sett);

            // копирование групп элементов
            ElemGroups.Clear();
            foreach (ElemGroup srcGroup in srcTemplate.ElemGroups)
            {
                ElemGroup destGroup = CreateElemGroup(srcGroup.TableType);
                destGroup.CopyFrom(srcGroup);
                ElemGroups.Add(destGroup);
            }

            // копирование команд
            Cmds.Clear();
            foreach (ModbusCmd srcCmd in srcTemplate.Cmds)
            {
                ModbusCmd destCmd = CreateModbusCmd(srcCmd.TableType, srcCmd.Multiple);
                destCmd.CopyFrom(srcCmd);
                Cmds.Add(destCmd);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Копировать модель устройства из заданной
        /// </summary>
        public void CopyFrom(DeviceTemplate srcTemplate)
        {
            if (srcTemplate == null)
            {
                throw new ArgumentNullException("srcTemplate");
            }

            // очистка списков групп элементов и команд
            ElemGroups.Clear();
            Cmds.Clear();

            // копирование групп элементов
            foreach (ElemGroup srcGroup in srcTemplate.ElemGroups)
            {
                ElemGroup elemGroup = new ElemGroup(srcGroup.TableType)
                {
                    Name          = srcGroup.Name,
                    Address       = srcGroup.Address,
                    Active        = srcGroup.Active,
                    StartKPTagInd = srcGroup.StartKPTagInd,
                    StartSignal   = srcGroup.StartSignal,
                };

                foreach (Elem srcElem in srcGroup.Elems)
                {
                    elemGroup.Elems.Add(new Elem()
                    {
                        Name         = srcElem.Name,
                        ElemType     = srcElem.ElemType,
                        ByteOrder    = srcElem.ByteOrder, // копируется ссылка на массив
                        ByteOrderStr = srcElem.ByteOrderStr
                    });
                }

                ElemGroups.Add(elemGroup);
            }

            // копирование команд
            foreach (ModbusCmd srcCmd in srcTemplate.Cmds)
            {
                Cmds.Add(new ModbusCmd(srcCmd.TableType)
                {
                    Multiple = srcCmd.Multiple,
                    ElemCnt  = srcCmd.ElemCnt,
                    Address  = srcCmd.Address,
                    Name     = srcCmd.Name,
                    CmdNum   = srcCmd.CmdNum
                });
            }
        }