Exemplo n.º 1
0
        public DeviceAbstract UnpackDevice(DeviceCfg config, Common.Store store)
        {
            DeviceAbstract device = UnpackDeviceSpecific(config.Custom);

            device.Name                     = config.Name;
            device.Description              = config.Description;
            device.BadCommPeriod            = config.BadCommWaitPeriod;
            device.UpdateInActiveTags       = config.InActiveUpdate;
            device.UpdateInActiveTagsPeriod = config.InActiveUpdatePeriod;

            device.ConnectionSource = store.ConnectionsSources.Values.FirstOrDefault(c => c.Name == config.ConnectionSourceCfg.Name);

            return(device);
        }
Exemplo n.º 2
0
        protected override string PackDeviceSpecific(DeviceAbstract device)
        {
            // SlaveId,
            // ByteOrder,
            // FrameType,
            // MaxGroupLength
            // MaxGroupSpareLength
            var mdev = (ModbusDevice)device;

            return(JsonConvert.SerializeObject(new
            {
                mdev.SlaveId,
                mdev.ByteOrder,
                FrameType = mdev.FrameType.ToString(),
                mdev.MaxGroupLength,
                mdev.MaxGroupSpareLength,
            }));
        }
Exemplo n.º 3
0
        public DeviceCfg PackDevice(DeviceAbstract device, StoreContext context)
        {
            var config = context.Devices.GetOrCreate(d => d.Name == device.Name);

            config.ClassName            = this.ClassName;
            config.Name                 = device.Name;
            config.Description          = device.Description;
            config.BadCommWaitPeriod    = device.BadCommPeriod;
            config.InActiveUpdate       = device.UpdateInActiveTags;
            config.InActiveUpdatePeriod = device.UpdateInActiveTagsPeriod;

            config.ConnectionSourceCfg = context.Connections.GetOrCreate(c => c.Name == device.ConnectionSource.Name);

            config.Custom = PackDeviceSpecific(device);

            foreach (var tag in device.Tags.Values)
            {
                var tagCfg = PackTag(tag, context);

                var storedTemplate = context.Templates.GetOrCreate(t => t.Id == tag.TemplateId);
                storedTemplate.Id = tag.TemplateId; //если он создался заново

                var dev2Templ = config.DeviceToTemplates.FirstOrDefault(d2t => d2t.Template.Id == tag.TemplateId);

                if (dev2Templ == default)
                {
                    dev2Templ          = context.DeviceToTemplates.GetOrCreate(d2t => d2t.TemplateId == tag.TemplateId && d2t.DeviceId == config.Id);
                    dev2Templ.Device   = config;
                    dev2Templ.Template = storedTemplate;
                    config.DeviceToTemplates.Add(dev2Templ);
                }

                dev2Templ.Template.Tags.Add(tagCfg);
            }
            return(config);
        }
Exemplo n.º 4
0
 protected abstract string PackDeviceSpecific(DeviceAbstract device);