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 SendCmd(Command cmd) { base.SendCmd(cmd); if (CanSendCmd) { Modbus.Cmd modbusCmd = deviceModel.FindCmd(cmd.CmdNum); if (modbusCmd != null && (modbusCmd.Multiple && (cmd.CmdType == CmdType.Standard || cmd.CmdType == CmdType.Binary) || !modbusCmd.Multiple && cmd.CmdType == CmdType.Standard)) { if (modbusCmd.Multiple) { modbusCmd.Data = cmd.CmdType == CmdType.Standard ? BitConverter.GetBytes(cmd.CmdVal) : cmd.CmdData; } else { modbusCmd.Value = modbusCmd.TableType == Modbus.TableTypes.HoldingRegisters ? (ushort)cmd.CmdVal : cmd.CmdVal > 0 ? (ushort)1 : (ushort)0; } modbusCmd.InitReqPDU(); modbusCmd.InitReqADU(devAddr, transMode); sendCmd(modbusCmd); } else { lastCommSucc = false; WriteToLog(Localization.UseRussian ? "Недопустимая команда" : "Illegal command"); } } // расчёт статистики CalcCmdStats(); }
/// <summary> /// Заполнить дерево в соответствии с шаблоном устройства /// </summary> private void FillTree() { // обнуление выбранных объектов и снятие признака изменения selElemGroup = null; selElemInfo = null; selCmd = null; selNode = null; ShowElemGroupProps(null); Modified = false; // приостановка отрисовки дерева treeView.BeginUpdate(); // очистка дерева grsNode.Nodes.Clear(); cmdsNode.Nodes.Clear(); treeView.SelectedNode = grsNode; // заполнение узла групп элементов foreach (Modbus.ElemGroup elemGroup in devTemplate.ElemGroups) { grsNode.Nodes.Add(NewElemGroupNode(elemGroup)); } // заполнение узла команд foreach (Modbus.Cmd cmd in devTemplate.Cmds) { cmdsNode.Nodes.Add(NewCmdNode(cmd)); } // раскрытие основных узлов дерева grsNode.Expand(); cmdsNode.Expand(); // возобновление отрисовки дерева treeView.EndUpdate(); }