Ejemplo n.º 1
0
        /// <summary>
        /// Поставить в очередь 1(одно) состояние - полная выгрузка/загрузки библиотеки
        /// </summary>
        /// <param name="type">Тип группы источников</param>
        /// <param name="idOwner">Идентификатор (индекс) группы источников</param>
        private void pushCommandReloadGroupSources(FormMain.INDEX_SRC type, int idOwner, bool bAbort)
        {
            GroupSources grpSrc = null;
            ID           id;
            string       msgDebug = string.Empty;

            grpSrc = m_listGroupSources[(int)type].Find(g => { return(FormMain.FileINI.GetIDIndex(g.m_strID) == idOwner); });

            //if (m_stateManager.m_bDebug == false)
            Push(null, new object[] {
                new object[] {
                    new object [] {
                        StatesMachine.COMMAND_RELAOD_GROUP_SOURCES
                        , type
                        , grpSrc.m_strID
                    }
                    ,
                },
            });
            //else
            //    ;

            id       = new ID(new object[] { type, idOwner, -1 });
            msgDebug = string.Format(@"HHandlerQueue::pushCommandReloadGroupSources ({0}) - ...", id.ToPrint());
            Logging.Logg().Debug(msgDebug, Logging.INDEX_MESSAGE.NOT_SET);
            //Debug.WriteLine(DateTime.Now.ToString() + @"- " + msgDebug);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Конструктор - основной (с параметрами)
 /// </summary>
 /// <param name="ids">Массив объектов-идентификаторов для объекта контроля</param>
 public ID(object[] ids)
 {
     //if (ids[0].GetType().IsEnum == true)
     m_typeOwner = (FormMain.INDEX_SRC)ids[0];
     //else
     //    throw new InvalidEnumArgumentException(@"HHandlerQueue.ID::ctor () - ...");
     m_idOwner      = (int)ids[1];
     m_idGroupSgnls = (int)ids[2];
 }
Ejemplo n.º 3
0
 public void AutoStop()
 {
     for (FormMain.INDEX_SRC indxSrc = FormMain.INDEX_SRC.SOURCE; indxSrc < FormMain.INDEX_SRC.COUNT_INDEX_SRC; indxSrc++)
     {
         foreach (GroupSources grpSources in m_listGroupSources[(int)indxSrc])
         {
             grpSources.AutoStop();
         }
     }
 }
Ejemplo n.º 4
0
            /// <summary>
            /// Получить объект 'ITEM_SRC' по индксу панели, строковому идентификатору
            /// </summary>
            /// <param name="indxSrc">Индекс панели</param>
            /// <param name="id">Строковый идентификатор объекта</param>
            /// <returns>Объект описания элемента группы</returns>
            private ITEM_SRC getItemSrc(FormMain.INDEX_SRC indxSrc,string id)
            {
                ITEM_SRC itemSrcRes = null;                        //Результат
                //Получить объект с
                SRC src       = m_arListGroupValues[(int)indxSrc]; //источник/назначение
                int groupType = getTypeGroup(id);


                //группы источников/сигналов
                switch (groupType)
                {
                case 0:     //GROUP_SOURCES
                    foreach (ITEM_SRC itemSrc in src.m_listGroupSrc)
                    {
                        if (itemSrc.m_strID.Equals(id) == true)
                        {    //Получить результат
                            itemSrcRes = itemSrc;
                            //Прекратить выполнение цикла
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                    break;

                case 2:     //GROUP_SIGNALS
                    foreach (ITEM_SRC itemSrc in src.m_listGroupSgnlsSrc)
                    {
                        if (itemSrc.m_strID.Equals(id) == true)
                        {    //Получить результат
                            itemSrcRes = itemSrc;
                            //Прекратить выполнение цикла
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                    break;

                default:
                    break;
                }
                //Вернуть результат
                return(itemSrcRes);
            }
Ejemplo n.º 5
0
            private GROUP_SIGNALS_SRC getObjectSrcGroupSignals(FormMain.INDEX_SRC indxPanel,string id)
            {
                foreach (GROUP_SIGNALS_SRC grpSgnls in m_arListGroupValues[(int)indxPanel].m_listGroupSgnlsSrc)
                {
                    if (grpSgnls.m_strID.Equals(id) == true)
                    {
                        return(grpSgnls);
                    }
                    else
                    {
                        ;
                    }
                }

                return(null);
            }
Ejemplo n.º 6
0
            public void UpdateParameter(FormMain.INDEX_SRC type,string strIdGroup,int indxGrpSgnls,GROUP_SIGNALS_PARS parValues)
            {
                string        parNames = string.Empty;
                List <string> listParPrevValues
                ,listParCurValues;

                parNames = $"{KEY_TREE_SGNLS [(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS]}{indxGrpSgnls}";

                listParPrevValues = GetSecValueOfKey($"{SEC_SRC_TYPES [(int)type]}{s_chSecDelimeters [(int)INDEX_DELIMETER.SEC_PART_TARGET]}{strIdGroup}",parNames)
                                    .Split(s_chSecDelimeters [(int)INDEX_DELIMETER.PAIR_VAL])
                                    .ToList <string> ();
                listParCurValues = parValues.ValuesToFileINI(listParPrevValues);

                UpdateParameter(type
                                ,strIdGroup
                                ,KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + indxGrpSgnls
                                ,string.Join(s_chSecDelimeters [(int)INDEX_DELIMETER.PAIR_VAL].ToString(),listParCurValues.ToArray()));
            }
Ejemplo n.º 7
0
            private string[,] GetListGroupSignals(FormMain.INDEX_SRC indx)
            {
                string[,] arStrRes = null;
                int i = -1;

                List <GROUP_SIGNALS_SRC> listGroupSrc = m_arListGroupValues[(int)indx].m_listGroupSgnlsSrc;

                arStrRes = new string[2,listGroupSrc.Count];

                i = 0;
                foreach (GROUP_SIGNALS_SRC grpSrc in listGroupSrc)
                {
                    arStrRes[0,i] = grpSrc.m_strID;
                    arStrRes[1,i] = grpSrc.m_strShrName;

                    i++;
                }

                return(arStrRes);
            }
Ejemplo n.º 8
0
            /// <summary>
            /// Получить объект 'ITEM_SRC' по индксу панели, типу группы, индексу текущей группы
            /// </summary>
            /// <param name="indxSrc">Индекс панели</param>
            /// <param name="groupType">Тип группы</param>
            /// <param name="indxSel">Индекс выбранной группы</param>
            /// <returns>Объект описания элемента группы</returns>
            private ITEM_SRC getItemSrc(FormMain.INDEX_SRC indxSrc,int groupType,string idSel)
            {
                ITEM_SRC itemSrcRes = null;

                SRC src = m_arListGroupValues[(int)indxSrc]; //источник/назначение

                //группы источников/сигналов
                switch (groupType)
                {
                case 0:     //GROUP_SOURCES
                    itemSrcRes = src.m_listGroupSrc[GetIDIndex(idSel)];
                    break;

                case 2:     //GROUP_SIGNALS
                    itemSrcRes = src.m_listGroupSgnlsSrc[GetIDIndex(idSel)];
                    break;

                default:
                    break;
                }

                return(itemSrcRes);
            }
Ejemplo n.º 9
0
        /// <summary>
        /// Заполнить список с информацией о группах источников
        /// </summary>
        /// <param name="indxSrc">Индекс панели</param>
        /// <param name="arGroupSources">Массив с информацией о группах с источниками</param>
        /// <param name="arGroupSignals">Массив с информацией о группах с сигналами</param>
        /// <returns>Признак выполнения функции</returns>
        private int setListGroupSources(FormMain.INDEX_SRC indxSrc, GROUP_SRC[] arGroupSources, GROUP_SIGNALS_SRC[] arGroupSignals)
        {
            int iRes = 0;

            if (m_listGroupSources[(int)indxSrc] == null)
            {
                m_listGroupSources[(int)indxSrc] = new List <GroupSources>();
            }
            else
            {
                ;
            }

            Type typeObjGroupSources = typeof(GroupSources);

            if (indxSrc == FormMain.INDEX_SRC.DEST)
            {
                typeObjGroupSources = typeof(GroupSourcesDest);
            }
            else
            {
                ;
            }

            List <GROUP_SIGNALS_SRC> listGroupSignals = new List <GROUP_SIGNALS_SRC>();
            GroupSources             grpSrc;

            foreach (GROUP_SRC itemSrc in arGroupSources)
            {
                listGroupSignals.Clear();
                int cnt = (itemSrc as GROUP_SRC).m_listGroupSignalsPars.Count
                , j     = -1;
                for (j = 0; j < cnt; j++)
                {
                    foreach (GROUP_SIGNALS_SRC itemGrooupSignals in arGroupSignals)
                    {
                        if (itemGrooupSignals.m_strID.Equals((itemSrc as GROUP_SRC).m_listGroupSignalsPars[j].m_strId) == true)
                        {
                            listGroupSignals.Add(itemGrooupSignals);
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                }

                ////Вариант №1
                //grpSrc = new GroupSources(itemSrc, listGroupSignals);
                //Вариант №2
                grpSrc = Activator.CreateInstance(typeObjGroupSources, new object[] { itemSrc, listGroupSignals }) as GroupSources;
                //if (indxSrc == FormMain.INDEX_SRC.DEST)
                grpSrc.EvtDataAskedHostQueue += new DelegateObjectFunc(onEvtDataAskedHostQueue_GroupSources);
                //else ;

                m_listGroupSources[(int)indxSrc].Add(grpSrc);
            }

            return(iRes);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Заполнить рабочий элемент - список источников
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="grpSrc">Объект с данными для заполнения</param>
 private void fillWorkItem(FormMain.INDEX_SRC indxWork, GROUP_SRC grpSrc)
 {
     m_arLoader[(int)indxWork].FillWorkItem(grpSrc);
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Заполнить значениями объект со списком групп (элементов групп) (истоников, сигналов)
 /// </summary>
 /// <param name="indxWork">Индекс панели конфигурации</param>
 /// <param name="indxPanel">Индекс группы элементов (элементов) на панели конфигурации</param>
 /// <param name="rows">Массив строк для заполнения</param>
 private void fillWorkItem(FormMain.INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, string[,] rows)
 {
     m_arLoader[(int)indxWork].FillWorkItem(key, rows);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Обработчик события 'EvtDataAskedHost' от панелей (источник, назначение)
        /// </summary>
        /// <param name="obj">Параметр для передачи-массив (0-панель, 1-индекс группы источников, 2-индекс группы сигналов)</param>
        private void onEvtDataAskedPanelWork_PanelLoader(object par)
        {
            object [] pars = (par as EventArgsDataHost).par[0] as object [];
            //Массив параметров для передачи
            object[] arObjToDataHost = new object [] { };
            //Событие для постановки в очередь обработки событий
            HHandlerQueue.StatesMachine state = HHandlerQueue.StatesMachine.UNKNOWN;
            //Определить панель-инициатор сообщения
            FormMain.INDEX_SRC indxWork = (FormMain.INDEX_SRC)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.OBJ] as PanelLoader).Index;

            switch ((KEY_EVENT)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_EVT])
            {
            case KEY_EVENT.SELECTION_CHANGED:
                switch (indxWork)
                {
                case FormMain.INDEX_SRC.SOURCE:
                    switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ])
                    {
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES:
                        state           = HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SOURCES;
                        arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } };
                        break;

                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS:
                        //state = ;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                            , new object[] {
                                (int)HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;

                    case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP:
                        state           = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;

                    case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING:
                        //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING:
                        state           = HHandlerQueue.StatesMachine.SET_TEXT_ADDING;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;

                    case PanelLoader.KEY_CONTROLS.GROUP_BOX_GROUP_SIGNALS:
                        state           = HHandlerQueue.StatesMachine.SET_GROUP_SIGNALS_PARS;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL])
                                , (GROUP_SIGNALS_PARS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;

                    case PanelLoader.KEY_CONTROLS.RBUTTON_CUR_INTERVAL:
                    case PanelLoader.KEY_CONTROLS.RBUTTON_CUSTOMIZE:
                        state           = HHandlerQueue.StatesMachine.GET_GROUP_SIGNALS_DATETIME_PARS;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL])
                                , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] as object [])[0]             //Строковый идентификатор группы сигналов
                                , (MODE_WORK)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA] as object [])[1]          //MODE_WORK
                            }
                        };
                        break;

                    default:
                        break;
                    }
                    break;

                    #region INDEX_SRC.DEST
                case FormMain.INDEX_SRC.DEST:
                    switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ])
                    {
                        #region DGV_GROUP_SOURCES
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES:
                        state           = HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES;
                        arObjToDataHost = new object[] { new object[] { (int)state, pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL] } };
                        break;
                        #endregion

                        #region DGV_GROUP_SIGNALS
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS:
                        //state = ;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                            , new object[] {
                                (int)HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;
                        #endregion

                        #region CBX_SOURCE_OF_GROUP
                    case PanelLoader.KEY_CONTROLS.CBX_SOURCE_OF_GROUP:
                        state           = HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;
                        #endregion

                        #region TBX_GROUPSOURCES_ADDING
                    case PanelLoader.KEY_CONTROLS.TBX_GROUPSOURCES_ADDING:
                        //case PanelLoader.KEY_CONTROLS.TBX_GROUPSIGNALS_ADDING:
                        state           = HHandlerQueue.StatesMachine.SET_TEXT_ADDING;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                , (string)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;
                        #endregion

                        #region GROUP_BOX_GROUP_SIGNALS
                    case PanelLoader.KEY_CONTROLS.GROUP_BOX_GROUP_SIGNALS:
                        state           = HHandlerQueue.StatesMachine.SET_GROUP_SIGNALS_PARS;
                        arObjToDataHost = new object[] {
                            new object[] {
                                (int)state
                                , indxWork
                                , (string)(pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL])
                                , (GROUP_SIGNALS_PARS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                            }
                        };
                        break;
                        #endregion

                    default:
                        break;
                    }
                    break;
                    #endregion

                default:
                    break;
                }
                break;

            case KEY_EVENT.CELL_CLICK:
                switch (indxWork)
                {
                case FormMain.INDEX_SRC.SOURCE:
                    switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ])
                    {
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES:
                        state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES;
                        break;

                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS:
                        state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS;
                        break;

                    default:
                        break;
                    }
                    break;

                case FormMain.INDEX_SRC.DEST:
                    switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ])
                    {
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES:
                        state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES;
                        break;

                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS:
                        state = HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS;
                        break;

                    default:
                        break;
                    }
                    break;

                default:
                    break;
                }

                arObjToDataHost = new object[] { new object []
                                                 {
                                                     (int)state
                                                     , indxWork
                                                     , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                                     , pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                                                 } };
                break;

            case KEY_EVENT.BTN_DLL_RELOAD:
                switch (indxWork)
                {
                case FormMain.INDEX_SRC.SOURCE:
                case FormMain.INDEX_SRC.DEST:
                    //state = ;
                    arObjToDataHost = new object[] {
                        new object []
                        {
                            (int)HHandlerQueue.StatesMachine.COMMAND_RELAOD_GROUP_SOURCES
                            , indxWork
                            , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                            //, pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                        }
                    };
                    break;

                default:
                    break;
                }
                break;

            case KEY_EVENT.BTN_CLEAR_CLICK:
                switch (indxWork)
                {
                case FormMain.INDEX_SRC.SOURCE:         //для SOURCE удаление НЕвозможно
                    ;
                    break;

                case FormMain.INDEX_SRC.DEST:
                    switch ((PanelLoader.KEY_CONTROLS)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_OBJ])
                    {
                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES:             // для DEST группы источников удаление НЕвозможно
                        ;
                        break;

                    case PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS:             // удаление возможно ТОЛЬКО для DEST группв сигналов
                        state           = HHandlerQueue.StatesMachine.CLEARVALUES_DEST_GROUP_SIGNALS;
                        arObjToDataHost = new object[] { new object []
                                                         {
                                                             (int)state
                                                             , indxWork
                                                             , pars[(int)PanelLoader.INDEX_PREPARE_PARS.ID_OBJ_SEL]
                                                             , pars[(int)PanelLoader.INDEX_PREPARE_PARS.DEPENDENCED_DATA]
                                                         } };
                        break;

                    default:
                        break;
                    }
                    break;

                default:
                    break;
                }
                break;

            default:
                break;
            }

            //Ретрансляция для постановки в очередь
            if (arObjToDataHost.Length > 0)
            {
                DataAskedHost(arObjToDataHost);
            }
            else
            {
                ;
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Обработчик события получения данных по запросу (выполняется в текущем потоке)
        /// </summary>
        /// <param name="obj">Результат, полученный по запросу (массив 'object')</param>
        protected override void onEvtDataRecievedHost(object obj)
        {
            //Обработанное состояние
            HHandlerQueue.StatesMachine state = (HHandlerQueue.StatesMachine)Int32.Parse((obj as object[])[0].ToString());
            //Параметры (массив) в 1-ом элементе результата
            object par = (obj as object[])[1];

            try {
                switch (state)
                {
                case HHandlerQueue.StatesMachine.LIST_GROUP_SOURCES:     //Группы источников (источник)
                    fillWorkItem(FormMain.INDEX_SRC.SOURCE, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)FormMain.INDEX_SRC.SOURCE] as string[, ]);
                    fillWorkItem(FormMain.INDEX_SRC.DEST, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)FormMain.INDEX_SRC.DEST] as string[, ]);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SOURCES:     //Группа (объект) источников (источник)
                    //m_arCurrentSrcItems [(int)FormMain.INDEX_SRC.SOURCE] = par as ITEM_SRC;
                    fillWorkItem(FormMain.INDEX_SRC.SOURCE, par as GROUP_SRC);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES:     //Группа (объект) источников (назначение)
                    //m_arCurrentSrcItems[(int)FormMain.INDEX_SRC.DEST] = par as ITEM_SRC;
                    fillWorkItem(FormMain.INDEX_SRC.DEST, par as GROUP_SRC);
                    break;

                case HHandlerQueue.StatesMachine.TIMER_WORK_UPDATE:
                    m_iSecondUpdate = (int)par;
                    startTimerUpdate();
                    activeTimerUpdate(true);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS:     //Объект с параметрами группы сигналов (источник)
                    //???
                    //fillWorkItem(FormMain.INDEX_SRC.SOURCE, par as GROUP_SIGNALS_SRC);
                    fillWorkItem(FormMain.INDEX_SRC.SOURCE, par as GROUP_SIGNALS_PARS);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS:     //Объект группы сигналов (источник)
                    fillWorkItem(FormMain.INDEX_SRC.SOURCE, par as GROUP_SIGNALS_SRC);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS:     //Объект с параметрами группы сигналов (назначение)
                    //???
                    //fillWorkItem(FormMain.INDEX_SRC.DEST, par as GROUP_SIGNALS_SRC);
                    fillWorkItem(FormMain.INDEX_SRC.DEST, par as GROUP_SIGNALS_PARS);
                    break;

                case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS:     //Объект группы сигналов (назначение)
                    //???
                    fillWorkItem(FormMain.INDEX_SRC.DEST, par as GROUP_SIGNALS_SRC);
                    break;

                case HHandlerQueue.StatesMachine.STATE_GROUP_SOURCES:     //Состояние группы источников (источник, назначение)
                    for (FormMain.INDEX_SRC indxSrc = FormMain.INDEX_SRC.SOURCE; indxSrc < FormMain.INDEX_SRC.COUNT_INDEX_SRC; indxSrc++)
                    {
                        enabledWorkItem(indxSrc, PanelLoader.KEY_CONTROLS.DGV_GROUP_SOURCES, (par as object[])[(int)indxSrc] as GroupSources.STATE[]);
                    }
                    break;

                case HHandlerQueue.StatesMachine.STATE_GROUP_SIGNALS:     //Состояние группы сигналов  (источник, назначение)
                    for (FormMain.INDEX_SRC indxSrc = FormMain.INDEX_SRC.SOURCE; indxSrc < FormMain.INDEX_SRC.COUNT_INDEX_SRC; indxSrc++)
                    {
                        enabledWorkItem(indxSrc, PanelLoader.KEY_CONTROLS.DGV_GROUP_SIGNALS, (par as object[])[(int)indxSrc] as object []);
                    }
                    break;

                case HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SOURCES:     //Состояние (изменено) группы источников (источник, назначение)
                    //Немедленно запросить состояния групп источников
                    changeTimerUpdate(0);
                    break;

                case HHandlerQueue.StatesMachine.STATE_CHANGED_GROUP_SIGNALS:     //Состояние (изменено) группы сигналов (источник, назначение)
                    //Немедленно запросить состояния групп сигналов
                    changeTimerUpdate(0);
                    break;

                case HHandlerQueue.StatesMachine.COMMAND_RELAOD_GROUP_SOURCES:     //Состояние (выгружена/загружена) группы источников (источник, назначение)
                    //Немедленно запросить состояния групп источников
                    changeTimerUpdate(0);
                    break;

                case HHandlerQueue.StatesMachine.DATA_SRC_GROUP_SIGNALS:
                    if (par == null)
                    {
                        m_arLoader[(int)FormMain.INDEX_SRC.SOURCE].UpdateData();
                    }
                    else
                    {
                        m_arLoader[(int)FormMain.INDEX_SRC.SOURCE].UpdateData(par as DataTable);
                    }
                    break;

                case HHandlerQueue.StatesMachine.DATA_DEST_GROUP_SIGNALS:
                    if (par == null)
                    {
                        m_arLoader[(int)FormMain.INDEX_SRC.DEST].UpdateData();
                    }
                    else
                    {
                        m_arLoader[(int)FormMain.INDEX_SRC.DEST].UpdateData(par as DataTable);
                    }
                    break;

                //case HHandlerQueue.StatesMachine.SET_IDCUR_SOURCE_OF_GROUP:
                //    break;
                case HHandlerQueue.StatesMachine.GET_GROUP_SIGNALS_DATETIME_PARS:
                    if (!(par == null))
                    {
                        m_arLoader[(int)FormMain.INDEX_SRC.SOURCE].FillDatetimePars(par as DATETIME_WORK);
                    }
                    else
                    {
                        ;
                    }
                    break;

                default:
                    break;
                }
            } catch (Exception e) {
                Logging.Logg().Exception(e, string.Format(@"PanelWork::onEvtDataRecievedHost (state={0})", state), Logging.INDEX_MESSAGE.NOT_SET);
            }
        }
Ejemplo n.º 14
0
            ///// <summary>
            ///// Объект для описания парметров взаимодействия экземпляров приложения
            ///// </summary>
            //public PanelClientServer.InteractionParameters m_InteractionPars;
            /// <summary>
            /// Конструктор - основной
            /// </summary>
            /// <param name="nameFile">Наименование файла конфигурации</param>
            public FileINI(string nameFile)
                : base(nameFile,true)
            {
                string sec = string.Empty;
                Dictionary <string,string> dictSecValues = null;

                //Получить наименования частей секций
                SEC_SRC_TYPES  = GetMainValueOfKey(@"SEC_SRC_TYPES").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.VALUES]);
                KEY_TREE_SRC   = GetMainValueOfKey(@"KEY_TREE_SRC").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.VALUES]);
                KEY_TREE_SGNLS = GetMainValueOfKey(@"KEY_TREE_SGNLS").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.VALUES]);
                KEY_FORMULA    = GetMainValueOfKey(@"KEY_FORMULA");
                //Получить ключ для чтения параметров в секции
                KEY_PARS = GetMainValueOfKey(@"KEY_PARS");
                //Получить период для обновления информации на панели "Работа"
                if (Int32.TryParse(GetMainValueOfKey(@"PANEL_WORK_UPDATE"),out m_iSecPanelWorkUpdate) == true)
                {
                    Logging.Logg().Debug(@"FileINI::ctor () - PANEL_WORK_UPDATE = " + m_iSecPanelWorkUpdate,Logging.INDEX_MESSAGE.NOT_SET);
                }
                else
                {
                    Logging.Logg().Error(@"FileINI::FileINI () - Параметр PANEL_WORK_UPDATE не удалось инициализировать ...",Logging.INDEX_MESSAGE.NOT_SET);
                }
                //Инициализировать словарь с формулами
                fillDictFormula();

                //Создать все объекты, списки для значений из файла конфигурации
                m_arListGroupValues = new SRC [(int)FormMain.INDEX_SRC.COUNT_INDEX_SRC];
                for (FormMain.INDEX_SRC i = INDEX_SRC.SOURCE; i < INDEX_SRC.COUNT_INDEX_SRC; i++)
                {
                    m_arListGroupValues[(int)i] = new SRC();
                }
                foreach (SRC src in m_arListGroupValues)
                {
                    src.m_listGroupSrc      = new List <GROUP_SRC>();
                    src.m_listGroupSgnlsSrc = new List <GROUP_SIGNALS_SRC>();
                }

                if (SEC_SRC_TYPES.Length == (int)FormMain.INDEX_SRC.COUNT_INDEX_SRC)
                {
                    for (FormMain.INDEX_SRC i = INDEX_SRC.SOURCE; i < INDEX_SRC.COUNT_INDEX_SRC; i++)
                    {
                        //Получить наименование секции для группы источников (в ~ от 'i')
                        sec = SEC_SRC_TYPES[(int)i];
                        //Получить словарь параметров для панели 'Источник'
                        dictSecValues = getSecValues(sec);

                        //Получить группы источников, сигналов (источник)
                        if (!(dictSecValues == null))
                        {
                            //Получить все группы источников
                            fillGroupValues(dictSecValues,sec,KEY_TREE_SRC[(int)INDEX_KEY_SRC.GROUP_SRC],i,typeof(GROUP_SRC));

                            //Получить все группы сигналов
                            fillGroupValues(dictSecValues,sec,KEY_TREE_SGNLS[(int)INDEX_KEY_SRC.GROUP_SRC],i,typeof(GROUP_SIGNALS_SRC));
                        }
                        else
                        {
                            ;
                        }

                        int j        = -1
                        ,cntGrpSgnls = -1;
                        foreach (GROUP_SRC grpSrc in m_arListGroupValues[(int)i].m_listGroupSrc)
                        {
                            cntGrpSgnls = grpSrc.m_listGroupSignalsPars.Count;
                            for (j = 0; j < cntGrpSgnls; j++)
                            {
                                if (grpSrc.m_listGroupSignalsPars[j].m_strId.Equals(string.Empty) == false)
                                {
                                    grpSrc.m_listGroupSignalsPars[j].m_strShrName = getItemSrc(i,grpSrc.m_listGroupSignalsPars[j].m_strId).m_strShrName;
                                }
                                else
                                {
                                    ;
                                }
                            }
                        }
                    }
                }
                else
                {
                    ;
                }
            }
Ejemplo n.º 15
0
            /// <summary>
            /// Добавить группу и ее значения
            /// </summary>
            /// <param name="indxSrc">Индекс панели (источник, неазначение)</param>
            /// <param name="type">Тип группы</param>
            /// <param name="secGroup">Наименование для секции со значениями параметров группы</param>
            /// <returns>Результат выполнения</returns>
            private int addGroupValues(FormMain.INDEX_SRC indxSrc,Type type,string shrName,string secGroup)
            {
                int iRes = 0; //Результат выполнения
                //Индекс типа элемента группы (источник, сигнал)
                INDEX_TYPE_GROUP indxTypeGroup;
                int    iStartArgs = -1;                          //Индекс 1-го символа аргументов в формуле
                string msgErr     = string.Empty;                // строка с сообщением об ошибке

                string[] values                                  //ЗначениЕ для элемента группы
                ,vals;                                           //ЗначениЕ для (1-го) параметра элемента группы
                int    j       = -1;                             //Индекс для ключа элемента группы (источник, сигнал) в секции
                string keyPars = string.Empty                    //Ключ для элемента группы (источник, сигнал) в секции
                ,key           = string.Empty;
                Dictionary <string,string> dictSecValues = null; // словарь значений секции

                ////Вариант №1
                //switch (typeof(type))
                //{
                //    default:
                //        break;
                //}
                //Вариант №2
                ITEM_SRC itemSrc = null;

                if (type == typeof(GROUP_SRC))
                {//Источник
                    indxTypeGroup = INDEX_TYPE_GROUP.SRC;
                }
                else
                if (type == typeof(GROUP_SIGNALS_SRC))
                {    //Сигнал
                    indxTypeGroup = INDEX_TYPE_GROUP.SIGNAL;
                }
                else
                {
                    throw new Exception(@"FileINI::addGroupValues () - неизвестный тип группы: " + type.FullName);
                }

                //Добавить элемент группы
                switch (indxTypeGroup)
                {
                case INDEX_TYPE_GROUP.SRC:     //Добавить группу источников
                    itemSrc = addGroupSources((int)indxSrc,secGroup);
                    break;

                case INDEX_TYPE_GROUP.SIGNAL:     //Добавить группу сигналов
                    itemSrc = addGroupSignals((int)indxSrc);
                    break;

                default:
                    break;
                }

                //Проверить наличие секции
                if ((isSec(secGroup) == true) &&
                    (!(itemSrc == null)))
                {
                    //Присвоить наименование группы элементов (источников, сигналов)
                    itemSrc.m_strID      = secGroup.Split(s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET])[1];
                    itemSrc.m_strShrName = shrName;

                    //Присвоить "дополнительные" значения для группы
                    //if (typeGroup == INDEX_TYPE_GROUP.SRC)
                    if (itemSrc is GROUP_SRC)
                    {//Только для группы источников
                        (itemSrc as GROUP_SRC).SetAdding(GetSecValueOfKey(secGroup,@"ADDING").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]));
                    }
                    else
                    {
                        ;
                    }

                    //Получить словарь значений секции
                    dictSecValues = getSecValues(secGroup);
                    ////ЗначениЯ для элемента группы
                    //// только для источника, т.к. для сигнала ... (см. 'SIGNAL_SRC')
                    //Dictionary <string, string> dictItemValues;

                    //Проверить наличие значений в секции
                    if (!(dictSecValues == null))
                    {
                        keyPars = (indxTypeGroup == INDEX_TYPE_GROUP.SRC ? KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP] : indxTypeGroup == INDEX_TYPE_GROUP.SIGNAL ? KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.SIGNAL_OF_GROUP] : string.Empty) + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + KEY_PARS;

                        //Получить наименовния параметров для элемента группы (источник, сигнал)
                        itemSrc.m_listSKeys = GetSecValueOfKey(secGroup,keyPars).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string> ();

                        foreach (string parName in itemSrc.m_listSKeys)
                        {
                            if (parName.Equals(string.Empty) == true)
                            {
                                throw new Exception(@"FileINI::addGroupValues (" + indxSrc.ToString() + @", " + type.AssemblyQualifiedName + @", " + secGroup + @") - ...");
                            }
                            else
                            {
                                ;
                            }
                        }

                        j = 0; //1-ый индекс == 0
                        while (true)
                        {
                            //Сфрмировать ключ элемента группы в секции
                            switch (indxTypeGroup)
                            {
                            case INDEX_TYPE_GROUP.SRC:     //Источник
                                key = KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP];
                                break;

                            case INDEX_TYPE_GROUP.SIGNAL:     //Сигнал
                                key = KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.SIGNAL_OF_GROUP];
                                break;

                            default:
                                break;
                            }

                            //Добавить к ключу индекс
                            key += j.ToString();

                            //Проверить наличие ключа в сеекции
                            if (isSecKey(secGroup,key) == true)
                            {
                                //Получить значение по ключу для элмента группы (источник, сигнал)
                                values = GetSecValueOfKey(secGroup,key).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]);

                                if (values.Length == itemSrc.m_listSKeys.Count)
                                {
                                    switch (indxTypeGroup)
                                    {
                                    case INDEX_TYPE_GROUP.SRC:     //Источник
                                        (itemSrc as GROUP_SRC).Add(KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP],values);
                                        break;

                                    case INDEX_TYPE_GROUP.SIGNAL:     //Сигнал
                                        (itemSrc as GROUP_SIGNALS_SRC).Add(values);
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                else
                                {
                                    //Значение по ключу не соответствует формату
                                    break;
                                }
                            }
                            else
                            {
                                //Ключ в секции не  найден
                                break;
                            }
                            //Увеличить индекс элемента (источник, сигнал)
                            j++;
                        }

                        if (indxTypeGroup == INDEX_TYPE_GROUP.SIGNAL)
                        {
                            // если была добавлена группа сигналов
                            try {
                                if ((!((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls == null)) &&
                                    ((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Count > 0))
                                {
                                    initGroupSignalsFormula(itemSrc as GROUP_SIGNALS_SRC,indxSrc.ToString() + @", " + type.AssemblyQualifiedName + @", " + secGroup);
                                }
                                else
                                {
                                    ; // нет ни одного сигнала
                                }
                            } catch (Exception e) {
                                Logging.Logg().Exception(e,@"FileINI::ctor () - addGroupValues () - ...",Logging.INDEX_MESSAGE.NOT_SET);
                            }
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        //Секция есть, но в ней не определен ни один источник(сигнал)...
                        iRes = -1; //???
                    }
                }
                else
                {
                    throw new Exception(@"FileINI::ctor () - addGroupValues () - группа объявлена, но значения не определены [" + secGroup + @"] ...");
                }

                return(iRes);
            }
Ejemplo n.º 16
0
        protected override int StateCheckResponse(int s, out bool error, out object outobj)
        {
            int           iRes  = -1;
            StatesMachine state = (StatesMachine)s;

            error  = true;
            outobj = null;

            ItemQueue itemQueue = null;

            try
            {
                switch (state)
                {
                    #region LIST_GROUP_SOURCES
                case (int)StatesMachine.LIST_GROUP_SOURCES:
                    error  = false;
                    outobj = new object [] {
                        m_fileINI.ListSrcGroupSources
                        , m_fileINI.ListDestGroupSources
                    };

                    iRes = 0;
                    break;
                    #endregion

                    #region LIST_GROUP_SIGNALS
                case StatesMachine.LIST_GROUP_SIGNALS:
                    error  = false;
                    outobj = new object[] {
                        m_fileINI.ListSrcGroupSignals
                        , m_fileINI.ListDestGroupSignals
                    };

                    iRes = 0;
                    break;
                    #endregion

                    #region LIST_SRC_GROUP_SOURCE_ITEMS, LIST_SRC_GROUP_SOURCE_PARS, LIST_SRC_GROUP_SOURCE_PROP, LIST_SRC_GROUP_SIGNAL_ITEMS, LIST_SRC_GROUP_SIGNAL_PARS, LIST_SRC_GROUP_SIGNAL_PROP
                case StatesMachine.LIST_SRC_GROUP_SOURCE_ITEMS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    =
                        //m_fileINI.GetListItemsOfGroupSource(itemQueue.Pars.ToArray())
                        m_fileINI.GetListItemsOfGroupSource(itemQueue.Pars.ToArray())
                    ;

                    iRes = 0;
                    break;

                case StatesMachine.LIST_SRC_GROUP_SOURCE_PARS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListParsOfGroupSource(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_SRC_GROUP_SOURCE_PROP:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemPropOfGroupSource(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_SRC_GROUP_SIGNAL_ITEMS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemsOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_SRC_GROUP_SIGNAL_PARS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListParsOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_SRC_GROUP_SIGNAL_PROP:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemPropOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;
                    #endregion

                    #region LIST_DEST_GROUP_SOURCE_ITEMS, LIST_DEST_GROUP_SOURCE_PARS, LIST_DEST_GROUP_SOURCE_PROP, LIST_DEST_GROUP_SIGNAL_ITEMS, LIST_DEST_GROUP_SIGNAL_PARS, LIST_DEST_GROUP_SIGNAL_PROP
                case StatesMachine.LIST_DEST_GROUP_SOURCE_ITEMS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemsOfGroupSource(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_DEST_GROUP_SOURCE_PARS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListParsOfGroupSource(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_DEST_GROUP_SOURCE_PROP:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemPropOfGroupSource(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_DEST_GROUP_SIGNAL_ITEMS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemsOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_DEST_GROUP_SIGNAL_PARS:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListParsOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.LIST_DEST_GROUP_SIGNAL_PROP:
                    error     = false;
                    itemQueue = Peek;
                    outobj    = m_fileINI.GetListItemPropOfGroupSignal(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;
                    #endregion

                    #region OBJ_SRC_GROUP_SOURCES, OBJ_DEST_GROUP_SOURCES
                case StatesMachine.OBJ_SRC_GROUP_SOURCES:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр строковый идентификатор "выбранноой" группы источников
                    outobj = m_fileINI.GetObjectSrcGroupSources((string)itemQueue.Pars[0]);

                    iRes = 0;
                    break;

                case StatesMachine.OBJ_DEST_GROUP_SOURCES:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр индекс "выбранноой" группы источников
                    outobj = m_fileINI.GetObjectDestGroupSources((string)itemQueue.Pars[0]);

                    iRes = 0;
                    break;
                    #endregion

                    #region TIMER_WORK_UPDATE
                case StatesMachine.TIMER_WORK_UPDATE:
                    error  = false;
                    outobj = m_fileINI.SecondWorkUpdate;

                    iRes = 0;
                    break;
                    #endregion

                    #region OBJ_SRC_GROUP_SIGNALS_PARS, OBJ_SRC_GROUP_SIGNALS, OBJ_DEST_GROUP_SIGNALS_PARS, OBJ_DEST_GROUP_SIGNALS
                case StatesMachine.OBJ_SRC_GROUP_SIGNALS_PARS:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр идентификатор "выбранноой" группы сигналов
                    outobj = m_fileINI.GetObjectGroupSignalsPars(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.OBJ_SRC_GROUP_SIGNALS:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр идентификатор "выбранноой" группы сигналов
                    outobj = m_fileINI.GetObjectGroupSignals(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.OBJ_DEST_GROUP_SIGNALS_PARS:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр идентификатор "выбранноой" группы сигналов
                    outobj = m_fileINI.GetObjectGroupSignalsPars(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;

                case StatesMachine.OBJ_DEST_GROUP_SIGNALS:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр идентификатор "выбранноой" группы сигналов
                    outobj = m_fileINI.GetObjectGroupSignals(itemQueue.Pars.ToArray());

                    iRes = 0;
                    break;
                    #endregion

                    #region STATE_GROUP_SOURCES, STATE_GROUP_SIGNALS
                case StatesMachine.STATE_GROUP_SOURCES:
                    error  = false;
                    outobj = new object[(int)FormMain.INDEX_SRC.COUNT_INDEX_SRC];
                    for (FormMain.INDEX_SRC indxSrc = FormMain.INDEX_SRC.SOURCE; indxSrc < FormMain.INDEX_SRC.COUNT_INDEX_SRC; indxSrc++)
                    {
                        (outobj as object[])[(int)indxSrc] = new GroupSources.STATE[m_listGroupSources[(int)indxSrc].Count];

                        foreach (GroupSources grpSrc in m_listGroupSources[(int)indxSrc])
                        {
                            ((outobj as object[])[(int)indxSrc] as GroupSources.STATE[])[m_listGroupSources[(int)indxSrc].IndexOf(grpSrc)] = grpSrc.State;
                        }
                    }

                    iRes = 0;
                    break;

                case StatesMachine.STATE_GROUP_SIGNALS:
                    error     = false;
                    itemQueue = Peek;
                    //??? 0-й параметр индекс "выбранноой" группы сигналов
                    outobj = new object[(int)FormMain.INDEX_SRC.COUNT_INDEX_SRC];
                    for (FormMain.INDEX_SRC indxSrc = FormMain.INDEX_SRC.SOURCE; indxSrc < FormMain.INDEX_SRC.COUNT_INDEX_SRC; indxSrc++)
                    {
                        if (!((int)itemQueue.Pars[(int)indxSrc] < 0))
                        {
                            (outobj as object[])[(int)indxSrc] = m_listGroupSources[(int)indxSrc][(int)itemQueue.Pars[(int)indxSrc]].GetArgGroupSignals();
                        }
                        else
                        {
                            (outobj as object[])[(int)indxSrc] = new object [] { }
                        }
                    }
                    ;

                    iRes = 0;
                    break;
                    #endregion

                    #region STATE_CHANGED_GROUP_SOURCES, STATE_CHANGED_GROUP_SIGNALS
                case StatesMachine.STATE_CHANGED_GROUP_SOURCES:
                    error     = false;
                    itemQueue = Peek;

                    iRes = m_listGroupSources[(int)((FormMain.INDEX_SRC)itemQueue.Pars[0])][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].StateChange();
                    break;

                case StatesMachine.STATE_CHANGED_GROUP_SIGNALS:
                    error     = false;
                    itemQueue = Peek;

                    iRes = m_listGroupSources[(int)((FormMain.INDEX_SRC)itemQueue.Pars[0])][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].StateChange((string)itemQueue.Pars[2]);
                    break;
                    #endregion

                    #region COMMAND_RELAOD_GROUP_SOURCES
                case StatesMachine.COMMAND_RELAOD_GROUP_SOURCES:
                    error     = false;
                    itemQueue = Peek;

                    iRes = m_listGroupSources[(int)((FormMain.INDEX_SRC)itemQueue.Pars[0])][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].Reload(itemQueue.Pars.Length > 2 ? (bool)itemQueue.Pars[2] : false);
                    break;
                    #endregion

                    #region CLEARVALUES_DEST_GROUP_SIGNALS
                case StatesMachine.CLEARVALUES_DEST_GROUP_SIGNALS:
                    //[1] - идентификаторы
                    //[2] = дата/время / продолжительность
                    error     = false;
                    itemQueue = Peek;

                    int idGrpSrc         = FormMain.FileINI.GetIDIndex((string)(itemQueue.Pars[1] as object [])[0])
                    , idGrpSgnls         = FormMain.FileINI.GetIDIndex((string)(itemQueue.Pars[1] as object[])[1]);
                    DateTime dtStartDate = (DateTime)(itemQueue.Pars[2] as object[])[0];
                    TimeSpan tsStartTime = (TimeSpan)(itemQueue.Pars[2] as object[])[1]
                    , tsPeriodMain       = (TimeSpan)(itemQueue.Pars[2] as object[])[2];

                    iRes = 0;
                    break;
                    #endregion

                    #region DATA_SRC_GROUP_SIGNALS, DATA_DEST_GROUP_SIGNALS
                case StatesMachine.DATA_SRC_GROUP_SIGNALS:
                case StatesMachine.DATA_DEST_GROUP_SIGNALS:
                    error     = false;
                    itemQueue = Peek;

                    FormMain.INDEX_SRC indxGroupSrc = state == StatesMachine.DATA_SRC_GROUP_SIGNALS ? FormMain.INDEX_SRC.SOURCE :
                                                      state == StatesMachine.DATA_DEST_GROUP_SIGNALS ? FormMain.INDEX_SRC.DEST :
                                                      FormMain.INDEX_SRC.COUNT_INDEX_SRC;
                    //??? зачем проверка индекса группы источников, как это значение м.б. отрицательным (в элементе управления не выделена ни одна строка!!!)
                    // см. 'PanelWork::fTimerUpdate ()' - из-за того, что при старте /minimize элемент управления не отображается и в нем не назначается выделенная строка
                    if (!((int)itemQueue.Pars[0] < 0))
                    {
                        outobj = m_listGroupSources[(int)indxGroupSrc][(int)itemQueue.Pars[0]].GetDataToPanel(itemQueue.Pars[1] as string, out error);
                    }
                    else
                    {
                        ;
                    }

                    iRes = 0;
                    break;
                    #endregion

                    #region SET_IDCUR_SOURCE_OF_GROUP, SET_TEXT_ADDING, SET_GROUP_SIGNALS_PARS
                case StatesMachine.SET_IDCUR_SOURCE_OF_GROUP:
                    error     = false;
                    itemQueue = Peek;

                    m_listGroupSources[(int)itemQueue.Pars[0]][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].m_IDCurrentConnSett = (string)itemQueue.Pars[2];
                    m_fileINI.UpdateParameter((FormMain.INDEX_SRC)itemQueue.Pars[0], (string)itemQueue.Pars[1], @"SCUR", (string)itemQueue.Pars[2]);

                    iRes = 0;
                    break;

                case StatesMachine.SET_TEXT_ADDING:
                    error     = false;
                    itemQueue = Peek;

                    (m_listGroupSources[(int)itemQueue.Pars[0]][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])] as GroupSources).SetAdding(((string)itemQueue.Pars[2]).Split(new char[] { FileINI.s_chSecDelimeters[(int)FileINI.INDEX_DELIMETER.PAIR_VAL] }));
                    m_fileINI.UpdateParameter((FormMain.INDEX_SRC)itemQueue.Pars[0], (string)itemQueue.Pars[1], @"ADDING", (string)itemQueue.Pars[2]);

                    iRes = 0;
                    break;

                case StatesMachine.SET_GROUP_SIGNALS_PARS:
                    error     = false;
                    itemQueue = Peek;

                    int          indxGroupSgnls = -1;
                    GroupSources grpSrcs        = (m_listGroupSources[(int)itemQueue.Pars[0]][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])] as GroupSources);
                    indxGroupSgnls = grpSrcs.SetGroupSignalsPars(/*(string)itemQueue.Pars[2],*/ itemQueue.Pars[2] as GROUP_SIGNALS_PARS);
                    if ((itemQueue.Pars [2] as GROUP_SIGNALS_PARS).IsUpdateParameterRequired == true)
                    {
                        // сохранять только для режима "текущие значения"
                        m_fileINI.UpdateParameter((FormMain.INDEX_SRC)itemQueue.Pars [0], (string)itemQueue.Pars [1], indxGroupSgnls, itemQueue.Pars [2] as GROUP_SIGNALS_PARS);
                    }
                    else
                    {
                        ;
                    }

                    iRes = 0;
                    break;
                    #endregion

                    #region GET_GROUP_SIGNALS_DATETIME_PARS
                case StatesMachine.GET_GROUP_SIGNALS_DATETIME_PARS:
                    error     = false;
                    itemQueue = Peek;

                    GROUP_SIGNALS_SRC_PARS grpSgnlsPars = m_listGroupSources[(int)FormMain.INDEX_SRC.SOURCE][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].GetGroupSignalsPars((string)itemQueue.Pars[2]);
                    outobj = grpSgnlsPars.m_arWorkIntervals[(int)itemQueue.Pars[3]];

                    iRes = 0;
                    break;
                    #endregion

                    #region GET_INTERACTION_PARAMETERS
                case StatesMachine.GET_INTERACTION_PARAMETERS:
                    error     = false;
                    itemQueue = Peek;

                    outobj = new PanelClientServer.InteractionParameters(m_fileINI.GetMainValueOfKey(@"INTERACTION"));

                    iRes = 0;
                    break;
                    #endregion

                    #region INTERACTION_EVENT
                case StatesMachine.INTERACTION_EVENT:
                    error     = false;
                    itemQueue = Peek;

                    if (itemQueue.Pars.Length > 2)
                    {
                        EventInteraction(new object [] { itemQueue.Pars[0], itemQueue.Pars[1], itemQueue.Pars[2] });
                    }
                    else
                    {
                        EventInteraction(new object[] { itemQueue.Pars[0], itemQueue.Pars[1] });
                    }

                    iRes = 0;
                    break;
                    #endregion

#if _STATE_MANAGER
                    #region OMANAGEMENT_ADD, OMANAGEMENT_REMOVE, OMANAGEMENT_CONFIRM, OMANAGEMENT_UPDATE, OMANAGEMENT_CONTROL
                case StatesMachine.OMANAGEMENT_ADD:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    add((ID)itemQueue.Pars[0], (TimeSpan)itemQueue.Pars[1]);
                    break;

                case StatesMachine.OMANAGEMENT_REMOVE:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    remove((ID)itemQueue.Pars[0]);
                    break;

                case StatesMachine.OMANAGEMENT_CONFIRM:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    confirm((ID)itemQueue.Pars[0]);
                    break;

                case StatesMachine.OMANAGEMENT_UPDATE:
                    iRes  = 0;
                    error = false;

                    itemQueue = Peek;

                    update((ID)itemQueue.Pars[0]);
                    break;

                case StatesMachine.OMANAGEMENT_CONTROL:
                    iRes  = 0;
                    error = false;

                    new Thread(new ThreadStart(targetFunc)).Start();
                    break;

                    #endregion
#endif
                default:
                    break;
                }
            }
            catch (Exception e)
            {
                Logging.Logg().Exception(e, @"HHandlerQueue::StateCheckResponse (state=" + state.ToString() + @") - ...", Logging.INDEX_MESSAGE.NOT_SET);

                error = true;
                iRes  = -1 * (int)state;
            }

            return(iRes);
        }
Ejemplo n.º 17
0
 /// <summary>
 /// "Включение"/"отключение" элементов интерфейса в зависимости от состояния
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="key">Ключ элемента интерфейса</param>
 /// <param name="states">Массив состояний объектов</param>
 private void enabledWorkItem(FormMain.INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, GroupSources.STATE[] states)
 {
     m_arLoader[(int)indxWork].EnabledWorkItem(key, states);
 }
Ejemplo n.º 18
0
 /// <summary>
 /// "Включение"/"отключение" элементов интерфейса в зависимости от состояния (и-или параметров группы сигналов)
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="key">Ключ элемента интерфейса</param>
 /// <param name="args">Массив аргументов для каждой из групп сигналов (STATE, bEnableTools)</param>
 private void enabledWorkItem(FormMain.INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, object [] args)
 {
     m_arLoader[(int)indxWork].EnabledWorkItem(key, args);
 }
Ejemplo n.º 19
0
            public void UpdateParameter(FormMain.INDEX_SRC type,string strIdGroup,string par,string val)
            {
                Logging.Logg().Debug(@"FileINI::UpdateParameter (ID=" + strIdGroup + @", par=" + par + @") - ...",Logging.INDEX_MESSAGE.NOT_SET);

                if (par.Equals(@"SCUR") == true)
                {//Установить индекс тукущего источника данных
                    //???Какова очередность внесения изменений (объект - файл, файл - объект)
                    m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)].m_IDCurrentConnSett = val;
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                }
                else
                if (par.Equals(@"ADDING") == true)
                {
                    //???Какова очередность внесения изменений (объект - файл, файл - объект)
                    GROUP_SRC grpSrc = m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)];
                    grpSrc.SetAdding(val.Split(new char[] { s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL] }));
                    SetSecValueOfKey(SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup
                                     ,par
                                     ,val);
                }
                else
                {
                    int    indx = GetIDIndex(par);
                    string mask = string.Empty;
                    //Проверить является параметр индексированным (источник, группа сигналов)
                    if (!(indx < 0))
                    {    //Обновляемый параметр - индексированный
                        //???Какова очередность внесения изменений (объект - файл, файл - объект)
                        GROUP_SRC grpSrc = m_arListGroupValues[(int)type].m_listGroupSrc[GetIDIndex(strIdGroup)];
                        //Строковый идентификатор раздела (группа источников)
                        string secGroup = SEC_SRC_TYPES[(int)type] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + strIdGroup;
                        //Получить ниаменования параметров для групп сигналов
                        List <string> pars = GetSecValueOfKey(secGroup,KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + @"PARS").Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]).ToList <string>();
                        try
                        {
                            if (grpSrc.SetGroupSignalsPars(pars,val.Split(new char[] { s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL] })) == 0)
                            {
                                // сохранить значения в файле конфигурации
                                SetSecValueOfKey(secGroup
                                                 ,par
                                                 ,val);
                            }
                            else
                            {
                                ;
                            }
                        }
                        catch (Exception e)
                        {
                            Logging.Logg().Exception(e
                                                     ,@"FileINI::UpdateParameter (idGroup=" + strIdGroup
                                                     + @", par=" + par
                                                     + @", value=" + val
                                                     + @") - ..."
                                                     ,Logging.INDEX_MESSAGE.NOT_SET);
                        }
                    }
                    else
                    {
                        ;
                    }
                }
            }