Example #1
0
        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;
        }
Example #2
0
        /// <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();
        }
Example #3
0
        /// <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();
        }