Esempio n. 1
0
        /// <summary>
        /// Редактировать выбранный блок данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void editDataBlockToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddDataBlock addDataBlock = new AddDataBlock();
            int          uid          = 0;

            if (dataBlocks.CurrentRow != null)
            {
                uid = int.Parse(dataBlocks.CurrentRow.Cells[0].Value.ToString() ?? "0");
            }

            DataBlockUnit dataBlock = _configuration.FindDataBlock(uid);

            addDataBlock.DataBlock = dataBlock;


            addDataBlock.EditDataBlock();
            if (addDataBlock.Result == DialogResult.OK)
            {
                DataBlockUnit unit = addDataBlock.DataBlock;
                _configuration.ReplaceDataBlockUnit(unit);

                UpdateThreadsList();
                _statusBarMessage = $"Добавлена новая нить [{unit.Name}]";
                statusBar1.Text   = _statusBarMessage;
                _modified         = true;
            }

            UpdateDataBlockList();
            addDataBlock.Dispose();
        }
Esempio n. 2
0
        /// <summary>
        /// Обновить список сигналов
        /// </summary>
        private void UpdateSignalsList()
        {
            List <SignalView> dataSource = new List <SignalView>();
            List <SignalUnit> signals    = _configuration.ListSignalUnits.GetItems();

            foreach (SignalUnit signal in signals)
            {
                SignalView view = new SignalView();
                view.Uid  = signal.Uid.ToString();
                view.Name = signal.Name;
                view.Type = signal.Type.ToString();
                DataBlockUnit dataBlock = _configuration.FindDataBlock(signal.DataBlockUid);
                string        dbName    = "";
                if (dataBlock != null)
                {
                    dbName = dataBlock.Name;
                }
                view.DataBlockName = dbName;
                view.Byte          = signal.Byte.ToString();

                dataSource.Add(view);
            }

            dataThreadSignals.DataSource            = dataSource;
            dataThreadSignals.Columns[0].HeaderText = "UID";
            dataThreadSignals.Columns[0].Width      = 50;
            dataThreadSignals.Columns[1].HeaderText = "Наименование";
            dataThreadSignals.Columns[1].Width      = 200;
            dataThreadSignals.Columns[2].HeaderText = "Тип";
            dataThreadSignals.Columns[2].Width      = 50;
            dataThreadSignals.Columns[3].HeaderText = "Блок данных";
            dataThreadSignals.Columns[3].Width      = 150;
            dataThreadSignals.Columns[4].HeaderText = "Байт";
            dataThreadSignals.Columns[4].Width      = 50;
        }
Esempio n. 3
0
 /// <summary>
 /// Изменить параметры блока данных
 /// </summary>
 /// <param name="dataBlock">Блок данных с измененными параметрами</param>
 public void ReplaceDataBlockUnit(DataBlockUnit dataBlock)
 {
     for (int i = 0; i < ListDataBlockUnits.GetItemsCount(); i++)
     {
         if (ListDataBlockUnits[i].Uid == dataBlock.Uid)
         {
             ListDataBlockUnits[i] = dataBlock;
             break;
         }
     }
 }
Esempio n. 4
0
        /// <summary>
        /// Найти блок данных по имени
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        public DataBlockUnit FindDataBlock(int uid)
        {
            DataBlockUnit res = null;

            foreach (DataBlockUnit item in ListDataBlockUnits)
            {
                if (item.Uid == uid)
                {
                    res = item;
                    break;
                }
            }

            return(res);
        }
Esempio n. 5
0
        /// <summary>
        /// Найти блок данных по имени
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public DataBlockUnit FindDataBlock(string name)
        {
            DataBlockUnit res = null;

            foreach (DataBlockUnit item in ListDataBlockUnits)
            {
                if (item.Name == name)
                {
                    res = item;
                    break;
                }
            }

            return(res);
        }
Esempio n. 6
0
        public object FindElementByUid(int uid, UnitsTypes type)
        {
            object res = null;

            switch (type)
            {
            case UnitsTypes.Thread:
                ThreadUnit t = FindThreadUnitByUid(uid);
                res = t;
                break;

            case UnitsTypes.DataBlock:
                DataBlockUnit d = FindDataBlock(uid);
                res = d;
                break;
            }

            return(res);
        }
Esempio n. 7
0
        /// <summary>
        /// Добавить новый блок данных
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void addDataBlockToolStripMenuItem_Click(object sender, EventArgs e)
        {
            AddDataBlock addDataBlock = new AddDataBlock();

            addDataBlock.ShowDialog();
            if (addDataBlock.Result == DialogResult.OK)
            {
                DataBlockUnit dataBlock = addDataBlock.DataBlock;
                _configuration.ListDataBlockUnits.Add(dataBlock);

                UpdateThreadsList();
                _statusBarMessage = $"Добавлен новый блок данных [{dataBlock.Name}]";
                statusBar1.Text   = _statusBarMessage;
                _modified         = true;
            }

            UpdateDataBlockList();
            addDataBlock.Dispose();
        }
Esempio n. 8
0
        /// <summary>
        /// Удалить блок данных по его идентификатору
        /// </summary>
        /// <param name="uid">Идентификатор блока данных</param>
        /// <param name="cascade">Удаление также всех сигналов, привязанных к блоку данных</param>
        /// <returns>Результат выполнения операции удаления (-1 - не найден блок данных, 0 - успех, иначе - количество сигналов, привязанных к блоку данных)</returns>
        public int DeleteDataBlock(int uid, bool cascade = false)
        {
            int result = -1;

            DataBlockUnit db = FindDataBlock(uid);

            if (db == null)
            {
                return(result);            // Если блок данных не найдем, возвращаем статус -1
            }
            // Найдем сигналы, привязанные к блоку данных
            result = 0;
            for (int i = 0; i < ListSignalUnits.GetItemsCount(); i++)
            {
                if (ListSignalUnits[i].DataBlockUid == uid)
                {
                    if (cascade)
                    {
                        // Удаляем все сигналы, привязанные к этому блоку данных
                        ListSignalUnits.RemoveItem(i);
                    }
                    else
                    {
                        result++;
                    }
                }
            }

            if (result == 0)
            {
                for (int i = 0; i < ListDataBlockUnits.GetItemsCount(); i++)
                {
                    if (ListDataBlockUnits[i].Uid == uid)
                    {
                        ListDataBlockUnits.RemoveItem(i);
                        break;
                    }
                }
            }

            return(result);
        }
Esempio n. 9
0
        /// <summary>
        /// Нажата кнопка OK
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            DataBlock               = new DataBlockUnit();
            DataBlock.Uid           = string.IsNullOrEmpty(textUid.Text) ? 0 : int.Parse(textUid.Text);
            DataBlock.Name          = textName.Text;
            DataBlock.Port          = string.IsNullOrEmpty(textPort.Text) ? 0 : int.Parse(textPort.Text);
            DataBlock.DataBlockSize = string.IsNullOrEmpty(textBlockSize.Text) ? 0 : int.Parse(textBlockSize.Text);
            DataBlock.SenderHost    = textSenderIp.Text;
            DataBlock.SenderPort    = string.IsNullOrEmpty(textSenderPort.Text) ? 0 : int.Parse(textSenderPort.Text);
            DataBlock.Reversal      = checkReversal.Checked;
            DataBlock.HasHead       = checkHeader.Checked;
            DataBlock.ServerName    = textServer.Text;
            DataBlock.ServerPath    = textPath.Text;

            switch (comboType.Text)
            {
            case "TIMESET":
                DataBlock.Type = DataBlockType.TIMESET;
                break;

            case "TCP_CLIENT":
                DataBlock.Type = DataBlockType.TCP_CLIENT;
                break;

            case "TCP_SERVER":
                DataBlock.Type = DataBlockType.TCP_SERVER;
                break;

            case "OPC":
                DataBlock.Type = DataBlockType.OPC;
                break;

            case "UDP":
                DataBlock.Type = DataBlockType.UDP;
                break;
            }
            Result = DialogResult.OK;
        }