Exemplo n.º 1
0
            private string[,] GetListGroupSources(INDEX_SRC indx)
            {
                string[,] arStrRes = null;
                int i = -1;

                List <GROUP_SRC> listGroupSrc = m_arListGroupValues[(int)indx].m_listGroupSrc;

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

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

                    i++;
                }

                return(arStrRes);
            }
Exemplo n.º 2
0
            /// <summary>
            /// Получить объект 'ITEM_SRC' по индксу панели, типу группы, индексу текущей группы
            /// </summary>
            /// <param name="indxSrc">Индекс панели</param>
            /// <param name="groupType">Тип группы</param>
            /// <param name="indxSel">Индекс выбранной группы</param>
            /// <returns>Объект описания элемента группы</returns>
            private ITEM_SRC getItemSrc(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);
            }
Exemplo n.º 3
0
        /// <summary>
        /// Поставить в очередь 1(одно) состояние - полная выгрузка/загрузки библиотеки
        /// </summary>
        /// <param name="type">Тип группы источников</param>
        /// <param name="idOwner">Идентификатор (индекс) группы источников</param>
        private void pushCommandReloadGroupSources(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); });

            Push(null, new object[] {
                new object[] {
                    new object [] {
                        StatesMachine.COMMAND_RELAOD_GROUP_SOURCES
                        , type
                        , grpSrc.m_strID
                    }
                    ,
                },
            });

            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);
        }
Exemplo n.º 4
0
            /// <summary>
            /// Конструктор - основной
            /// </summary>
            /// <param name="nameFile">Наименование файла конфигурации</param>
            public FileINI(string nameFile)
                : base(nameFile,true)
            {
                //Получить наименования частей секций
                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_PARS = GetMainValueOfKey(@"KEY_PARS");
                //Получить период для обновления информации на панели "Работа"
                Logging.Logg().Debug(@"FileINI::ctor () - PANEL_WORK_UPDATE = " + GetMainValueOfKey(@"PANEL_WORK_UPDATE"),Logging.INDEX_MESSAGE.NOT_SET);
                m_iSecPanelWorkUpdate = Int32.Parse(GetMainValueOfKey(@"PANEL_WORK_UPDATE"));
                //if (Int32.TryParse (GetMainValueOfKey(@"PANEL_WORK_UPDATE"), out m_iSecPanelWorkUpdate) == false)
                //    throw new Exception(@"FileINI::FileINI () - Параметр PANEL_WORK_UPDATE не удалось инициализировать ...");
                //else ;

                //Создать все объекты, списки для значений из файла конфигурации
                m_arListGroupValues = new SRC [(int)INDEX_SRC.COUNT_INDEX_SRC];
                for (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)INDEX_SRC.COUNT_INDEX_SRC)
                {
                    for (INDEX_SRC i = INDEX_SRC.SOURCE; i < INDEX_SRC.COUNT_INDEX_SRC; i++)
                    {
                        //Получить наименование секции для группы источников (в ~ от 'i')
                        string sec = SEC_SRC_TYPES[(int)i];
                        //Получить словарь параметров для панели 'Источник'
                        Dictionary <string, string> 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
                {
                    ;
                }
            }
Exemplo n.º 5
0
            /// <summary>
            /// Добавить группу и ее значения
            /// </summary>
            /// <param name="indxSrc">Индекс панели (источник, неазначение)</param>
            /// <param name="type">Тип группы</param>
            /// <param name="secGroup">Наименование для секции со значениями параметров группы</param>
            /// <returns>Результат выполнения</returns>
            private int addGroupValues(INDEX_SRC indxSrc, Type type, string shrName, string secGroup)
            {
                int iRes = 0; //Результат выполнения
                //Индекс типа элемента группы (источник, сигнал)
                INDEX_TYPE_GROUP indxTypeGroup;

                ////Вариант №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 = new GROUP_SRC();
                    (itemSrc as GROUP_SRC).m_IDCurrentConnSett = GetSecValueOfKey(secGroup,@"SCUR");
                    (itemSrc as GROUP_SRC).m_strDLLName        = GetSecValueOfKey(secGroup,@"DLL_NAME");

                    //Инициализировать список с параметрами для групп сигналов для группы источников
                    (itemSrc as GROUP_SRC).m_listGroupSignalsPars = null;
                    (itemSrc as GROUP_SRC).m_listGroupSignalsPars = new List <GROUP_SIGNALS_PARS> ();

                    //Получить ниаменования параметров для групп сигналов
                    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> ();
                    string[]      vals;
                    string        key = string.Empty;

                    int j = 0;
                    while (true)
                    {
                        key = KEY_TREE_SGNLS[(int)INDEX_KEY_SIGNAL.GROUP_SIGNALS] + j.ToString();
                        if (isSecKey(secGroup,key) == true)
                        {
                            vals = GetSecValueOfKey(secGroup,key).Split(s_chSecDelimeters[(int)INDEX_DELIMETER.PAIR_VAL]);

                            if (vals.Length == pars.Count)
                            {
                                //??? каждую итерацию будет определяться тип 'GROUP_SIGNAL_PARS'
                                (itemSrc as GROUP_SRC).SetGroupSignalsPars(pars,vals);
                            }
                            else
                            {
                                string msg = @"FileINI::addGroupValues () - не установлены параметры для [" + secGroup + @", " + key + @"] - ...";
                                ////Вариант №1 - аврийно завершить загрузку - работу приложения
                                //throw new Exception(msg);
                                //Вариант №2 - зафиксировать ошибку - продолжить загрузку
                                Logging.Logg().Error(msg,Logging.INDEX_MESSAGE.NOT_SET);
                            }
                        }
                        else
                        {
                            break;
                        }

                        j++;
                    }

                    m_arListGroupValues[(int)indxSrc].m_listGroupSrc.Add(itemSrc as GROUP_SRC);
                    break;

                case INDEX_TYPE_GROUP.SIGNAL:     //Добавить группу сигналов
                    itemSrc = new GROUP_SIGNALS_SRC();
                    //(itemSrc as GROUP_SIGNALS_SRC).m_iAutoStart = bool.Parse(GetSecValueOfKey(secGroup, @"AUTO_START")) == true ? 1 : 0;
                    //(itemSrc as GROUP_SIGNALS_SRC).m_mode = bool.Parse(GetSecValueOfKey(secGroup, @"CUR_INTERVAL_STATE")) == true ? MODE_WORK.CUR_INTERVAL : MODE_WORK.COSTUMIZE;
                    //if (Int32.TryParse(GetSecValueOfKey(secGroup, @"CURINTERVAL_PERIODLOCAL"), out (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_iInterval) == false)
                    //    (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.CUR_INTERVAL].m_iInterval = -1;
                    //else
                    //    ;
                    //parseWorkInterval(GetSecValueOfKey(secGroup, @"COSTUMIZE_VALUE"), ref (itemSrc as GROUP_SIGNALS_SRC).m_arWorkIntervals[(int)MODE_WORK.COSTUMIZE]);
                    m_arListGroupValues[(int)indxSrc].m_listGroupSgnlsSrc.Add(itemSrc as GROUP_SIGNALS_SRC);
                    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;

                    string[] values //ЗначениЕ для элемента группы
                    ,vals;          //ЗначениЕ для (1-го) параметра элемента группы

                    //Присвоить "дополнительные" значения для группы
                    //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
                    {
                        ;
                    }

                    int    j   = -1;           //Индекс для ключа элемента группы (источник, сигнал) в секции
                    string key = string.Empty; //Ключ для элемента группы (источник, сигнал) в секции

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

                    //Проверить наличие значений в секции
                    if (!(dictSecValues == null))
                    {
                        string 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:     //Источник
                                        //Инициализация, если элемент группы 1-ый
                                        if ((itemSrc as GROUP_SRC).m_dictConnSett == null)
                                        {
                                            (itemSrc as GROUP_SRC).m_dictConnSett = new Dictionary <string,ConnectionSettings>();
                                        }
                                        else
                                        {
                                            ;
                                        }

                                        (itemSrc as GROUP_SRC).m_dictConnSett.Add(KEY_TREE_SRC[(int)INDEX_KEY_SRC.SRC_OF_GROUP] + (itemSrc as GROUP_SRC).m_dictConnSett.Count
                                                                                  ,new ConnectionSettings(
                                                                                      Int32.Parse(values[itemSrc.m_listSKeys.IndexOf(@"ID")])
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"NAME_SHR")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"IP")]
                                                                                      ,Int32.Parse(values[itemSrc.m_listSKeys.IndexOf(@"PORT")])
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"DB_NAME")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"UID")]
                                                                                      ,values[itemSrc.m_listSKeys.IndexOf(@"PSWD*")]
                                                                                      ));
                                        break;

                                    case INDEX_TYPE_GROUP.SIGNAL:     //Сигнал
                                        //Инициализация, если элемент группы 1-ый
                                        if ((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls == null)
                                        {
                                            (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls = new List <SIGNAL_SRC>();
                                        }
                                        else
                                        {
                                            ;
                                        }

                                        (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Add(new SIGNAL_SRC());
                                        (itemSrc as GROUP_SIGNALS_SRC).m_listSgnls[(itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Count - 1].m_arSPars = new string[values.Length];
                                        values.CopyTo((itemSrc as GROUP_SIGNALS_SRC).m_listSgnls[(itemSrc as GROUP_SIGNALS_SRC).m_listSgnls.Count - 1].m_arSPars,0);
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                else
                                {
                                    //Значение по ключу не соответствует формату
                                    break;
                                }
                            }
                            else
                            {
                                //Ключ в секции не  найден
                                break;
                            }
                            //Увеличить индекс элемента (источник, сигнал)
                            j++;
                        }
                    }
                    else
                    {
                        //Секция есть, но в ней не определен ни один источник...
                        iRes = -1; //???
                    }
                }
                else
                {
                    throw new Exception(@"FileINI::ctor () - addGroupValues () - группа объявлена, но значения не определены [" + secGroup + @"] ...");
                }

                return(iRes);
            }
Exemplo n.º 6
0
            /// <summary>
            /// Заполнить объект группы значениями из секции файла конфигурации
            /// </summary>
            /// <param name="dictValues">Словарь значений с перечислением всех групп панели</param>
            /// <param name="secTarget">Наименование целевой секции панели (источник, назначение)</param>
            /// <param name="secPart">Часть наименования секции со значенями для группы</param>
            /// <param name="indxNewSrc">Индекс панели (источник, назначение)</param>
            /// <param name="typeNewGroup">Тип группы</param>
            /// <returns>Результат выполнения функции</returns>
            private int fillGroupValues(Dictionary <string, string> dictValues, string secTarget, string secPart, INDEX_SRC indxNewSrc, Type typeNewGroup)
            {
                int iRes = 0   //Результат
                , i      = -1; //Номер группы

                string key = string.Empty;

                i = 0;
                //Получить все группы источников
                while (true)
                {
                    //Получить часть наименования секции
                    key = secPart + i.ToString();

                    if (dictValues.ContainsKey(key) == true)
                    {
                        //Добавить группу...
                        addGroupValues(indxNewSrc, typeNewGroup, dictValues[key], secTarget + s_chSecDelimeters[(int)INDEX_DELIMETER.SEC_PART_TARGET] + key);
                    }
                    else
                    {
                        break;
                    }
                    //Увеличить индекс группы
                    i++;
                }

                return(iRes);
            }
Exemplo n.º 7
0
        /// <summary>
        /// Обработчик события - состояние группы сигналов не актуально
        /// </summary>
        /// <param name="ev">Аргумент события</param>
        private void onCrashed(/*HHandlerQueue.EventCrashedArgs*/ object obj)
        {
            HHandlerQueue.EventCrashedArgs ev = obj as HHandlerQueue.EventCrashedArgs;

            object[] arToSend = null; // массив для аргументов состояния

            for (INDEX_SRC type = INDEX_SRC.SOURCE; type < INDEX_SRC.COUNT_INDEX_SRC; type++)
            {
                foreach (GroupSources grpSrc in m_listGroupSources[(int)type])
                {
                    if (grpSrc.m_iIdTypePlugInObjectLoaded == ev.m_id.m_idTypeRegistred)
                    {
                        switch (ev.m_state)
                        {
                        case STATE.CONTROLED:    // группа сигналов в работе
                            arToSend = new object[] {
                                (int)StatesMachine.STATE_CHANGED_GROUP_SIGNALS
                                , type
                                , grpSrc.m_strID
                                , grpSrc.GetIdGroupSignals(ev.m_id.m_idGroupSgnls)
                            };
                            // поставить в очередь 2 состояния: последовательный останов/запуск группы сигналов
                            Push(null, new object[] {
                                new object[] {
                                    arToSend     // для 'STOP'
                                    , arToSend   // для 'START'
                                    ,
                                },
                            });
                            break;

                        case STATE.ADDED:
                        case STATE.REMOVED:
#if _SEPARATE_APPDOMAIN
                            // группа сигналов не получила подтверждения от библиотеки при изменении своего состояния
                            // поставить в очередь 1 состояние - полная выгрузка/загрузки библиотеки
                            Push(null, new object[] {
                                new object[] {
                                    new object [] {
                                        StatesMachine.COMMAND_RELAOD_GROUP_SOURCES
                                        , type
                                        , grpSrc.m_strID
                                    }
                                    ,
                                },
                            });
#endif
                            break;

                        default:
                            break;
                        }

                        type = INDEX_SRC.COUNT_INDEX_SRC; // для прерывания внешнего цикла

                        break;                            // прервать внутренний цикл
                    }
                    else
                    {
                        ;
                    }
                }
            }
        }
Exemplo n.º 8
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;
            //Определить панель-инициатор сообщения
            INDEX_SRC indxWork = (INDEX_SRC)this.Controls.GetChildIndex(pars[(int)PanelLoader.INDEX_PREPARE_PARS.OBJ] as PanelLoader);

            switch ((KEY_EVENT)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_EVT])
            {
            case KEY_EVENT.SELECTION_CHANGED:
                switch (indxWork)
                {
                case 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           = HHandlerQueue.StatesMachine.OBJ_SRC_GROUP_SIGNALS_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]
                            }
                            , 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;

                    default:
                        break;
                    }
                    break;

                case 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.OBJ_DEST_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           = HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SIGNALS_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]
                            }
                            , new object[] {
                                (int)HHandlerQueue.StatesMachine.OBJ_DEST_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;

                    default:
                        break;
                    }
                    break;

                default:
                    break;
                }
                break;

            case KEY_EVENT.CELL_CLICK:
                switch (indxWork)
                {
                case 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 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;

            default:
                break;
            }

            //Ретрансляция для постановки в очередь
            DataAskedHost(arObjToDataHost);
        }
Exemplo n.º 9
0
            /// <summary>
            /// Добавить группу и ее значения
            /// </summary>
            /// <param name="indxSrc">Индекс панели (источник, неазначение)</param>
            /// <param name="type">Тип группы</param>
            /// <param name="secGroup">Наименование для секции со значениями параметров группы</param>
            /// <returns>Результат выполнения</returns>
            private int addGroupValues(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);
            }
Exemplo n.º 10
0
 /// <summary>
 /// Заполнить рабочий элемент - список групп
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="grpSrc">Объект с данными для заполнения</param>
 private void fillWorkItem(INDEX_SRC indxWork, GROUP_SIGNALS_SRC grpSrc)
 {
     m_arLoader[(int)indxWork].FillWorkItem(grpSrc);
 }
Exemplo n.º 11
0
 /// <summary>
 /// Заполнить значениями объект со списком групп (элементов групп) (истоников, сигналов)
 /// </summary>
 /// <param name="indxWork">Индекс панели конфигурации</param>
 /// <param name="indxPanel">Индекс группы элементов (элементов) на панели конфигурации</param>
 /// <param name="rows">Массив строк для заполнения</param>
 private void fillWorkItem(INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, string[,] rows)
 {
     m_arLoader[(int)indxWork].FillWorkItem(key, rows);
 }
Exemplo 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;
            //Определить панель-инициатор сообщения
            INDEX_SRC indxWork = (INDEX_SRC)this.Controls.GetChildIndex(pars[(int)PanelLoader.INDEX_PREPARE_PARS.OBJ] as PanelLoader);

            switch ((KEY_EVENT)pars[(int)PanelLoader.INDEX_PREPARE_PARS.KEY_EVT])
            {
            case KEY_EVENT.SELECTION_CHANGED:
                switch (indxWork)
                {
                case 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_DATETIME:
                    case PanelLoader.KEY_CONTROLS.RBUTTON_COSTUMIZE:
                        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;

                case 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.OBJ_DEST_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_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;

                    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;

                    default:
                        break;
                    }
                    break;

                default:
                    break;
                }
                break;

            case KEY_EVENT.CELL_CLICK:
                switch (indxWork)
                {
                case 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 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 INDEX_SRC.SOURCE:
                case 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 INDEX_SRC.SOURCE:         //для SOURCE удаление НЕвозможно
                    ;
                    break;

                case 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
            {
                ;
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// Обработчик события получения данных по запросу (выполняется в текущем потоке)
        /// </summary>
        /// <param name="obj">Результат, полученный по запросу (массив 'object')</param>
        private void onEvtDataRecievedHost(object obj)
        {
            //Обработанное состояние
            HHandlerQueue.StatesMachine state = (HHandlerQueue.StatesMachine)Int32.Parse((obj as object[])[0].ToString());
            //Параметры (массив) в 1-ом элементе результата
            object par = (obj as object[])[1];

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

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

            case HHandlerQueue.StatesMachine.OBJ_DEST_GROUP_SOURCES:     //Группа (объект) источников (назначение)
                //m_arCurrentSrcItems[(int)INDEX_SRC.DEST] = par as ITEM_SRC;
                fillWorkItem(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(INDEX_SRC.SOURCE, par as GROUP_SIGNALS_SRC);
                fillWorkItem(INDEX_SRC.SOURCE, par as GROUP_SIGNALS_PARS);
                break;

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

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

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

            case HHandlerQueue.StatesMachine.STATE_GROUP_SOURCES:     //Состояние группы источников (источник, назначение)
                for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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 (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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)INDEX_SRC.SOURCE].UpdateData();
                }
                else
                {
                    m_arLoader[(int)INDEX_SRC.SOURCE].UpdateData(par as DataTable);
                }
                break;

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

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

            default:
                break;
            }
        }
Exemplo n.º 14
0
 /// <summary>
 /// "Включение"/"отключение" элементов интерфейса в зависимости от состояния (и-или параметров группы сигналов)
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="key">Ключ элемента интерфейса</param>
 /// <param name="args">Массив аргументов для каждой из групп сигналов (STATE, bEnableTools)</param>
 private void enabledWorkItem(INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, object [] args)
 {
     m_arLoader[(int)indxWork].EnabledWorkItem(key, args);
 }
Exemplo n.º 15
0
 /// <summary>
 /// "Включение"/"отключение" элементов интерфейса в зависимости от состояния
 /// </summary>
 /// <param name="indxWork">Индекс панели</param>
 /// <param name="key">Ключ элемента интерфейса</param>
 /// <param name="states">Массив состояний объектов</param>
 private void enabledWorkItem(INDEX_SRC indxWork, PanelLoader.KEY_CONTROLS key, GroupSources.STATE[] states)
 {
     m_arLoader[(int)indxWork].EnabledWorkItem(key, states);
 }
Exemplo n.º 16
0
        /// <summary>
        /// Заполнить список с информацией о группах источников
        /// </summary>
        /// <param name="indxSrc">Индекс панели</param>
        /// <param name="arGroupSources">Массив с информацией о группах с источниками</param>
        /// <param name="arGroupSignals">Массив с информацией о группах с сигналами</param>
        /// <returns>Признак выполнения функции</returns>
        private int setListGroupSources(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 == 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 == INDEX_SRC.DEST)
                grpSrc.EvtDataAskedHostQueue += new DelegateObjectFunc(onEvtDataAskedHostQueue_GroupSources);
                //else ;

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

            return(iRes);
        }
Exemplo n.º 17
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)INDEX_SRC.COUNT_INDEX_SRC];
                    for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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)INDEX_SRC.COUNT_INDEX_SRC];
                    for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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)((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)((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)((INDEX_SRC)itemQueue.Pars[0])][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].Reload();
                    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;

                    INDEX_SRC indxGroupSrc = state == StatesMachine.DATA_SRC_GROUP_SIGNALS ? INDEX_SRC.SOURCE :
                                             state == StatesMachine.DATA_DEST_GROUP_SIGNALS ? INDEX_SRC.DEST :
                                             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((int)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((int)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);
                    //indxGroupSgnls = grpSrcs.getIndexGroupSignalsPars((string)itemQueue.Pars[2]);
                    m_fileINI.UpdateParameter((int)itemQueue.Pars[0], (string)itemQueue.Pars[1], indxGroupSgnls, itemQueue.Pars[2] as GROUP_SIGNALS_PARS);

                    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)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 = m_fileINI.m_InteractionPars;

                    iRes = 0;
                    break;
                    #endregion

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

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

                    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;

                    targetFunc();
                    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);
        }
Exemplo n.º 18
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)
                {
                case (int)StatesMachine.LIST_GROUP_SOURCES:
                    error  = false;
                    outobj = new object [] {
                        m_fileINI.ListSrcGroupSources
                        , m_fileINI.ListDestGroupSources
                    };

                    iRes = 0;
                    break;

                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_GROUP_SIGNALS:
                    error  = false;
                    outobj = new object[] {
                        m_fileINI.ListSrcGroupSignals
                        , m_fileINI.ListDestGroupSignals
                    };

                    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;

                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;

                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;

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

                    iRes = 0;
                    break;

                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;

                case StatesMachine.STATE_GROUP_SOURCES:
                    error  = false;
                    outobj = new object[(int)INDEX_SRC.COUNT_INDEX_SRC];
                    for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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)INDEX_SRC.COUNT_INDEX_SRC];
                    for (INDEX_SRC indxSrc = INDEX_SRC.SOURCE; indxSrc < 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;

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

                    iRes = m_listGroupSources[(int)((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)((INDEX_SRC)itemQueue.Pars[0])][FormMain.FileINI.GetIDIndex((string)itemQueue.Pars[1])].StateChange((string)itemQueue.Pars[2]);
                    break;

                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;

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

                    outobj = m_listGroupSources[(int)INDEX_SRC.SOURCE][(int)itemQueue.Pars[0]].GetDataToPanel(itemQueue.Pars[1] as string, out error);

                    iRes = 0;
                    break;

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

                    if (!((int)itemQueue.Pars[0] < 0))
                    {
                        outobj = m_listGroupSources[(int)INDEX_SRC.DEST][(int)itemQueue.Pars[0]].GetDataToPanel(itemQueue.Pars[1] as string, out error);
                    }
                    else
                    {
                        ;
                    }

                    iRes = 0;
                    break;

                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((int)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((int)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);
                    //indxGroupSgnls = grpSrcs.getIndexGroupSignalsPars((string)itemQueue.Pars[2]);
                    m_fileINI.UpdateParameter((int)itemQueue.Pars[0], (string)itemQueue.Pars[1], indxGroupSgnls, itemQueue.Pars[2] as GROUP_SIGNALS_PARS);

                    iRes = 0;
                    break;

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

                    GROUP_SIGNALS_SRC_PARS grpSgnlsPars = m_listGroupSources[(int)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;

                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);
        }