private void FrmDevTemplate_Load(object sender, EventArgs e) { // перевод формы Translator.TranslateForm(this, "Scada.Comm.Devices.KpModbus.FrmDevTemplate"); TranslateTree(); // настройка элементов управления openFileDialog.InitialDirectory = appDirs.ConfigDir; saveFileDialog.InitialDirectory = appDirs.ConfigDir; gbElem.Top = gbCmd.Top = gbElemGroup.Top; if (saveOnly) { btnNew.Visible = false; btnOpen.Visible = false; } if (string.IsNullOrEmpty(initialFileName)) { saveFileDialog.FileName = NewFileName; devTemplate = new Modbus.DeviceModel(); FillTree(); } else { saveFileDialog.FileName = initialFileName; LoadTemplate(initialFileName); } }
private void btnOpen_Click(object sender, EventArgs e) { // открытие шаблона устройства из файла if (CheckChanges()) { openFileDialog.FileName = ""; if (openFileDialog.ShowDialog() == DialogResult.OK) { saveFileDialog.FileName = openFileDialog.FileName; Modbus.DeviceModel templ = new Modbus.DeviceModel(); string errMsg; if (templ.LoadTemplate(openFileDialog.FileName, out errMsg)) { devTemplate = templ; fileName = openFileDialog.FileName; FillTree(); } else { ScadaUtils.ShowError(errMsg); } } } }
private void btnNew_Click(object sender, EventArgs e) { // создание шаблона устройства if (CheckChanges()) { saveFileDialog.FileName = ""; devTemplate = new Modbus.DeviceModel(); fileName = ""; FillTree(); } }
/// <summary> /// Загрузить шаблон устройства из файла /// </summary> private void LoadTemplate(string fname) { Modbus.DeviceModel templ = new Modbus.DeviceModel(); string errMsg; if (templ.LoadTemplate(fname, out errMsg)) { devTemplate = templ; fileName = fname; SetFormTitle(); FillTree(); } else { ScadaUiUtils.ShowError(errMsg); } }
private bool procChangedEv; // обрабатывать события на изменение данных /// <summary> /// Конструктор /// </summary> public FrmDevTemplate() { InitializeComponent(); devTemplate = new Modbus.DeviceModel(); modified = false; fileName = ""; selElemGroup = null; selElemInfo = null; selCmd = null; selNode = null; grsNode = treeView.Nodes["grsNode"]; cmdsNode = treeView.Nodes["cmdsNode"]; procChangedEv = false; ConfigDir = ""; LangDir = ""; }
private bool procChangedEv; // обрабатывать события на изменение данных /// <summary> /// Конструктор, ограничивающий создание формы без параметров /// </summary> private FrmDevTemplate() { InitializeComponent(); appDirs = null; initialFileName = ""; fileName = ""; saveOnly = false; devTemplate = null; modified = false; selElemGroup = null; selElemInfo = null; selCmd = null; selNode = null; grsNode = treeView.Nodes["grsNode"]; cmdsNode = treeView.Nodes["cmdsNode"]; procChangedEv = false; }
/// <summary> /// Выполнить действия после добавления КП на линию связи /// </summary> public override void OnAddedToCommLine() { // загрузка шаблона устройства deviceModel = null; elemGroupCnt = 0; floatSignals = new HashSet <int>(); string fileName = ReqParams.CmdLine.Trim(); if (fileName == "") { WriteToLog(string.Format(Localization.UseRussian ? "{0} Ошибка: Не задан шаблон устройства для {1}" : "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption)); } else { Dictionary <string, Modbus.DeviceModel> templates = GetTemplates(); if (templates.ContainsKey(fileName)) { // создание модели устройства на основе модели, загруженной ранее Modbus.DeviceModel template = templates[fileName]; if (template != null) { deviceModel = new Modbus.DeviceModel(); deviceModel.CopyFrom(template); elemGroupCnt = deviceModel.ElemGroups.Count; } } else { WriteToLog(string.Format(Localization.UseRussian ? "{0} Загрузка шаблона устройства из файла {1}" : "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName)); Modbus.DeviceModel template = new Modbus.DeviceModel(); string errMsg; if (template.LoadTemplate(AppDirs.ConfigDir + fileName, out errMsg)) { deviceModel = template; elemGroupCnt = deviceModel.ElemGroups.Count; templates.Add(fileName, template); } else { WriteToLog(errMsg); templates.Add(fileName, null); } } } // инициализация тегов КП на основе модели устройства if (elemGroupCnt > 0) { List <TagGroup> tagGroups = new List <TagGroup>(); int tagInd = 0; foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups) { TagGroup tagGroup = new TagGroup(elemGroup.Name); tagGroups.Add(tagGroup); elemGroup.StartKPTagInd = tagInd; foreach (Modbus.Elem elem in elemGroup.Elems) { int signal = ++tagInd; tagGroup.KPTags.Add(new KPTag(signal, elem.Name)); if (elem.ElemType == Modbus.ElemTypes.Float) { floatSignals.Add(signal); } } } InitKPTags(tagGroups); CanSendCmd = deviceModel.Cmds.Count > 0; } }
/// <summary> /// Выполнить действия после добавления КП на линию связи /// </summary> public override void OnAddedToCommLine() { // загрузка шаблона устройства deviceModel = null; elemGroupCnt = 0; floatSignals = new HashSet <int>(); string fileName = KPReqParams.CmdLine.Trim(); if (fileName == "") { WriteToLog((Localization.UseRussian ? "Не задан шаблон устройства для " : "Template is undefined for the ") + Caption); } else { Dictionary <string, Modbus.DeviceModel> templates = GetTemplates(); if (templates.ContainsKey(fileName)) { // создание модели устройства на основе модели, загруженной ранее Modbus.DeviceModel template = templates[fileName]; if (template != null) { deviceModel = new Modbus.DeviceModel(); deviceModel.CopyFrom(template); elemGroupCnt = deviceModel.ElemGroups.Count; } } else { WriteToLog((Localization.UseRussian ? "Загрузка шаблона устройства из файла " : "Load device template from file ") + fileName); Modbus.DeviceModel template = new Modbus.DeviceModel(); string errMsg; if (template.LoadTemplate(ConfigDir + fileName, out errMsg)) { deviceModel = template; elemGroupCnt = deviceModel.ElemGroups.Count; templates.Add(fileName, template); } else { WriteToLog(errMsg); templates.Add(fileName, null); } } } // инициализация параметров КП на основе модели устройства if (elemGroupCnt > 0) { ParamGroup[] paramGroups = new ParamGroup[elemGroupCnt]; int paramInd = 0; int paramGroupInd = 0; foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups) { int elemCnt = elemGroup.Elems.Count; ParamGroup paramGroup = new ParamGroup(elemGroup.Name, elemCnt); paramGroups[paramGroupInd++] = paramGroup; elemGroup.StartParamInd = paramInd; for (int i = 0; i < elemCnt; i++) { int signal = ++paramInd; Modbus.Elem elem = elemGroup.Elems[i]; Param param = new Param(signal, elem.Name); paramGroup.KPParams[i] = param; if (elem.ElemType == Modbus.ElemTypes.Float) { floatSignals.Add(signal); } } } InitArrays(paramInd, elemGroupCnt); for (int i = 0; i < elemGroupCnt; i++) { ParamGroups[i] = paramGroups[i]; } CopyParamsFromGroups(); CanSendCmd = deviceModel.Cmds.Count > 0; } }