示例#1
0
        public override void GetRDGValues(FormChangeMode.KeyDevice key, DateTime date)
        {
            delegateStartWait();
            lock (m_lockState)
            {
                ClearStates();

                CurrentKey = key;

                ClearValues();

                using_date = false;
                //comboBoxTecComponent.SelectedIndex = indxTECComponents;

                m_prevDate = date.Date;
                m_curDate  = m_prevDate;

                //if (m_listIGO.Count == 0)
                //{
                //    AddState((int)StatesMachine.InitIGO);
                //}
                //else
                //    ;

                AddState((int)StatesMachine.PPBRValues);

                Run(@"AdminMC::GetRDGValues ()");
            }
        }
示例#2
0
        public PanelTecView(StatisticCommon.TEC tec, FormChangeMode.KeyDevice key, PanelCustomTecView.HLabelCustomTecView label /*, DelegateStringFunc fErrRep, DelegateStringFunc fWarRep, DelegateStringFunc fActRep, DelegateBoolFunc fRepClr*/)
            : base(tec, key, new ASUTP.Core.HMark(new int[] { (int)CONN_SETT_TYPE.ADMIN, (int)CONN_SETT_TYPE.PBR, (int)CONN_SETT_TYPE.DATA_AISKUE, (int)CONN_SETT_TYPE.DATA_SOTIASSO }))
        {
            m_label = label;

            InitializeComponent();
        }
示例#3
0
            public LabelCustomTecViewProfile(FormChangeMode.KeyDevice key, LabelViewProperties properties)
                : this()
            {
                Key = key;

                Properties = properties;
            }
示例#4
0
        public void GetMaketEquipment(FormChangeMode.KeyDevice key, EventArgs <Guid> identifiers, DateTime date)
        {
            delegateStartWait();

            if (isConnected == false)
            {
                waitConnected();
            }
            else
            {
                ;
            }

            lock (m_lockState) {
                ClearStates();

                CurrentKey        = key;
                _maketIdentifiers = new List <Guid>(identifiers.m_listParameters);

                ClearValues();

                using_date = false;

                m_prevDate = date.Date;
                m_curDate  = m_prevDate;

                AddState((int)StatesMachine.MaketEquipment);

                Run(@"AdminMC::GetMaketHeader ()");
            }
        }
示例#5
0
        public void TestMethodToString()
        {
            FormChangeMode.KeyDevice key = new FormChangeMode.KeyDevice()
            {
                Id = -1, Mode = FormChangeMode.MODE_TECCOMPONENT.PC
            };

            StringAssert.Matches(key.ToString(), new Regex(FormChangeMode.MODE_TECCOMPONENT.PC.ToString()));
        }
示例#6
0
            private int getIndexTECComponent(FormChangeMode.KeyDevice key)
            {
                int iRes = -1;

                try {
                    iRes = allTECComponents.IndexOf(allTECComponents.Find(comp => comp.m_id == key.Id));
                } catch (Exception e) {
                    ASUTP.Logging.Logg().Exception(e, $@"AdminTS::getIndexTECComponent (key={key.Id}) - компонент не найден...", ASUTP.Logging.INDEX_MESSAGE.NOT_SET);
                }

                return(iRes);
            }
示例#7
0
        private void admin_onEventUnitTestSetValuesRequest(TECComponent comp, DateTime date, CONN_SETT_TYPE type, string[] queries, IEnumerable <int> listIdRec)
        {
            FormChangeMode.KeyDevice key = FormChangeMode.KeyDeviceEmpty;

            if (comboBoxTecComponent.SelectedIndex + 1 < comboBoxTecComponent.Items.Count)
            {
                key = comboBoxTecComponent.Items.Cast <ComboBoxItem>().ToArray()[comboBoxTecComponent.SelectedIndex + 1].Tag;
            }
            else
            {
                ;
            }

            _eventUnitTestNextIndexSetValuesRequest?.Invoke(key, comp, date, type, listIdRec, queries);
        }
示例#8
0
        /// <summary>
        /// Поток запроса значений для 'TecViewAlarm'
        /// </summary>
        /// <param name="synch">Объект для синхронизации</param>
        private void threadGetRDGValues(object synch)
        {
            int indxEv = -1;

            //if (m_waitHandleState[(int)INDEX_WAITHANDLE_REASON.SUCCESS].WaitOne (0, true) == false)
            ((AutoResetEvent)m_waitHandleState[(int)INDEX_WAITHANDLE_REASON.SUCCESS]).Set();
            //else ;

            for (INDEX_WAITHANDLE_REASON i = INDEX_WAITHANDLE_REASON.ERROR; i < INDEX_WAITHANDLE_REASON.COUNT_INDEX_WAITHANDLE_REASON; i++)
            {
                ((ManualResetEvent)m_waitHandleState[(int)i]).Reset();
            }

            foreach (TECComponent tc in allTECComponents)
            {
                if (tc.IsGTP == true)
                {
                    indxEv = WaitHandle.WaitAny(m_waitHandleState);
                    if (indxEv == (int)INDEX_WAITHANDLE_REASON.BREAK)
                    {
                        break;
                    }
                    else
                    {
                        if (!(indxEv == (int)INDEX_WAITHANDLE_REASON.SUCCESS))
                        {
                            ((ManualResetEvent)m_waitHandleState[indxEv]).Reset();
                        }
                        else
                        {
                            ;
                        }

                        CurrentKey = new FormChangeMode.KeyDevice()
                        {
                            Id = tc.m_id, Mode = tc.Mode
                        };

                        getRDGValues();
                    }
                }
                else
                {
                    ; //Это не ГТП
                }
            }
        }
示例#9
0
            /// <summary>
            /// Попытка итерации
            /// </summary>
            /// <param name="nameElem">имя опрашеваемого компонента</param>
            public void AttemptIter(FormChangeMode.KeyDevice key)
            {
                if (currentIter == CountIter)
                {
                    ClearCounter();
                }
                else
                {
                    ;
                }

                Iters [currentIter] = key;
                currentIter++;
                commonTotalIter++;

                reportIter(getTextReportSuccessIter());
            }
示例#10
0
        /// <summary>
        /// Поток запроса значений для 'TecViewAlarm'
        /// </summary>
        /// <param name="synch">Объект для синхронизации</param>
        private void threadGetRDGValues(object synch)
        {
            INDEX_WAITHANDLE_REASON indxEv = INDEX_WAITHANDLE_REASON.SUCCESS;

            //if (m_waitHandleState[(int)INDEX_WAITHANDLE_REASON.SUCCESS].WaitOne (0, true) == false)
            SetSyncState(INDEX_WAITHANDLE_REASON.SUCCESS);

            //else ;

            ResetSyncState();

            foreach (TECComponent tc in allTECComponents)
            {
                if (tc.IsGTP == true)
                {
                    indxEv = WaitAny(Constants.MAX_WATING, true);
                    if (indxEv == INDEX_WAITHANDLE_REASON.BREAK)
                    {
                        break;
                    }
                    else
                    {
                        if (!(indxEv == INDEX_WAITHANDLE_REASON.SUCCESS))
                        {
                            ResetSyncState((INDEX_WAITHANDLE_REASON)indxEv);
                        }
                        else
                        {
                            ;
                        }

                        CurrentKey = new FormChangeMode.KeyDevice()
                        {
                            Id = tc.m_id, Mode = tc.Mode
                        };

                        getRDGValues();
                    }
                }
                else
                {
                    ; //Это не ГТП
                }
            }
        }
示例#11
0
            /// <summary>
            /// Возвратить идентификатор п. меню с установленным признаком "Использовать"
            /// </summary>
            /// <returns>Идентификатор п. меню</returns>
            private FormChangeMode.KeyDevice getKeyDeviceMenuItemChecked()
            {
                FormChangeMode.KeyDevice keyRes = FormChangeMode.KeyDevice.Empty;
                int indxMenuItem = -1;

                // найти индекс п. меню
                foreach (MenuItem mi in ContextMenu.MenuItems)
                {
                    indxMenuItem = ContextMenu.MenuItems.IndexOf(mi);
                    if (indxMenuItem < (ContextMenu.MenuItems.Count - COUNT_FIXED_CONTEXT_MENUITEM))
                    {
                        if (mi.Checked == true)
                        {
                            break;
                        }
                        else
                        {
                            ;
                        }
                    }
                    else
                    {
                        ;
                    }
                }

                if (indxMenuItem < (ContextMenu.MenuItems.Count - COUNT_FIXED_CONTEXT_MENUITEM))
                {
                    // присвоить значение идентификатора
                    keyRes = (FormChangeMode.KeyDevice)ContextMenu.MenuItems [indxMenuItem].Tag;
                }

                else
                {
                    // идентификатор для этого п. меню нет
                    ;
                }

                return(keyRes);
            }
示例#12
0
                public override void GetRDGValues(FormChangeMode.KeyDevice key, DateTime date)
                {
                    ClearStates();

                    ClearValues();

                    if (m_tec.GetReadySensorsStrings(_type) == false)
                    {
                        AddState((int)StatesMachine.InitSensors);
                    }
                    else
                    {
                        ;
                    }

                    //using_date = false;

                    //AddState((int)TecView.StatesMachine.CurrentHours_Fact); //Только для определения сезона ???
                    //AddState((int)TecView.StatesMachine.CurrentTimeView);
                    AddState((int)TecView.StatesMachine.CurrentHours_TM_SN_PSUM);
                    AddState((int)TecView.StatesMachine.LastValue_TM_SN);
                }
示例#13
0
        /// <summary>
        /// Добавить столбец в DataGridView + заполнение значениями ячеек
        /// </summary>
        /// <param name="date">Дата отображаемых значений</param>
        /// <param name="bNewValues">Признак наличия новых значений (false - обновление оформления представления при изменении цветовой схемы)</param>
        /// <param name="bSyncReq">Признак необходимости синхронизации по окончании выполнения метода</param>
        private void addTextBoxColumn(DateTime date, bool bNewValues, bool bSyncReq)
        {
            int indxDB = m_IndexDB;

            FormChangeMode.KeyDevice key = ((AdminTS_NSS)m_arAdmin[indxDB]).m_listKeyTECComponentDetail[m_dgwAdminTable.Columns.Count - 2];
            ((DataGridViewAdminNSS)m_dgwAdminTable).addTextBoxColumn(((AdminTS_NSS)m_arAdmin[indxDB]).GetNameTECComponent(key, false)
                                                                     , key
                                                                     , ((AdminTS_NSS)m_arAdmin[indxDB]).GetIdGTPOwnerTECComponent(key));

            DataGridViewCellEventArgs ev;

            for (int i = 0; i < 24; i++)
            {
                if (m_dgwAdminTable.Columns.Count == 3) //Только при добавлении 1-го столбца
                {
                    m_dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString("dd-MM-yyyy HH:00");
                }
                else
                {
                    ;
                }

                m_dgwAdminTable.Rows[i].Cells[m_dgwAdminTable.Columns.Count - 2].Value = ((AdminTS_NSS)m_arAdmin[indxDB]).m_listCurRDGValues[m_dgwAdminTable.Columns.Count - 3][i].pbr.ToString("F2");
                ev = new DataGridViewCellEventArgs(m_dgwAdminTable.Columns.Count - 2, i);
                ((DataGridViewAdminNSS)m_dgwAdminTable).DataGridViewAdminNSS_CellValueChanged(null, ev);
            }

            if (bNewValues == true)
            {
                m_arAdmin [indxDB].CopyCurToPrevRDGValues();
            }
            else
            {
                ;
            }
        }
示例#14
0
        /// <summary>
        /// Метод добавления колонок в DataGridView + заполнение значениями ячеек
        /// </summary>
        /// <param name="date">Дата отображаемых значений</param>
        /// <param name="bNewValues">Признак наличия новых значений (false - обновление оформления представления при изменении цветовой схемы)</param>
        /// <param name="bSyncReq">Признак необходимости синхронизации по окончании выполнения метода</param>
        private void addTextBoxColumn(DateTime date, bool bNewValues, bool bSyncReq)
        {
            FormChangeMode.KeyDevice key = ((AdminTS_LK)m_admin).CurrentKey;
            int indx = ((AdminTS_LK)m_admin).GetCurrentIndexTECComponent();

            if (key.Id > (int)TECComponent.ID.TG)
            {
                // новый столбец
                ((DataGridViewAdminLK)this.dgwAdminTable).AddTextBoxColumn(m_admin.GetNameTECComponent(key, false),
                                                                           key.Id,
                                                                           m_admin.GetIdOwnerTECComponent(key.Mode == FormChangeMode.MODE_TECCOMPONENT.GTP ? FormChangeMode.MODE_TECCOMPONENT.TEC : FormChangeMode.MODE_TECCOMPONENT.GTP, key).Id,
                                                                           date);

                for (int i = 0; i < 24; i++)
                {
                    //Дата/время
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1)) //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows[i].Cells[0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }
                    //// цвет 0-го столбца изменяем всегда, на случай изменения цветовой гаммы приложения
                    //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor;

                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[this.dgwAdminTable.Columns.Count - 4].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [this.dgwAdminTable.Columns.Count - 4].Style.BackColor = dgwBackColor;
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn () - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message)
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null
                                                                                                   , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i));
                }
            }
            else
            {
                ;
            }

            if ((Admin.GetIdTECComponent(indx) > (int)TECComponent.ID.GTP) &&
                (Admin.GetIdTECComponent(indx) < (int)TECComponent.ID.PC))
            {
                for (int i = 0; i < 24; i++)
                {
                    //Дата/время
                    if (this.dgwAdminTable.Columns.Count == ((int)DataGridViewAdminLK.DESC_INDEX.COUNT_COLUMN + 1))   //Только при добавлении 1-го столбца
                    {
                        this.dgwAdminTable.Rows [i].Cells [0].Value = date.AddHours(i + 1).ToString(@"dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        ;
                    }
                    //// цвет 0-го столбца изменяем на случай изменения цветовой гаммы приложения
                    //this.dgwAdminTable.Rows [i].Cells [0].Style.BackColor = dgwBackColor;

                    try
                    {
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pbr.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_POWER].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].pmin.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [(int)DataGridViewAdminLK.DESC_INDEX.PLAN_TEMPERATURE].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 3].Value = (bool)(((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviationPercent);
                        //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 3].Style.BackColor = dgwBackColor;
                        this.dgwAdminTable.Rows[i].Cells[dgwAdminTable.Columns.Count - 2].Value = ((AdminTS_LK)m_admin).m_listCurRDGValues[indx][i].deviation.ToString("F2");
                        //this.dgwAdminTable.Rows [i].Cells [dgwAdminTable.Columns.Count - 2].Style.BackColor = dgwBackColor;
                    }
                    catch (Exception e)
                    {
                        Logging.Logg().Warning(string.Format("PanelAdminLK : addTextBoxColumn - нет листа с суточными значениями(снова потерян индекс): {0}", e.Message)
                                               , Logging.INDEX_MESSAGE.NOT_SET);
                    }

                    ((DataGridViewAdminLK)this.dgwAdminTable).DataGridViewAdminLK_CellValueChanged(null
                                                                                                   , new DataGridViewCellEventArgs(this.dgwAdminTable.Columns.Count - 4, i));
                }
            }

            if (bNewValues == true)
            {
                m_admin.CopyCurToPrevRDGValues();
                ((AdminTS_LK)m_admin).m_listPrevRDGValues.Add(m_admin.m_prevRDGValues);
            }
            else
            {
                ;
            }

            if (bSyncReq == true)
            {
                ((AdminTS_LK)m_admin).m_semaIndxTECComponents.Release();
            }
            else
            {
                ;
            }
        }
        public void Test_SetAdminValues()
        {
            #region Проверка переключения режимов работы
            try {
                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY | AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                //??? на практике исключение этого флага не потребуется
                //panel.ModeGetRDGValues &= ~AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                //Assert.IsTrue ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                //Assert.IsFalse ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                panel.ModeGetRDGValues  = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
            } catch (InvalidOperationException ioe) {
                Assert.IsTrue(string.Equals(ioe.Message, "PanelAdmin.ModeGetRDGValues::set - взаимоисключающие значения..."));
            }
            #endregion

            // проверка наличия необходимых "статических" форм
            Assert.IsNotNull(FormMain.formGraphicsSettings);

            string mesDebug = string.Empty;

            FormChangeMode.KeyDevice prevKey = FormChangeMode.KeyTECComponentEmpty
            , nextKey = FormChangeMode.KeyTECComponentEmpty;
            Action onEventUnitTestSetDataGridViewAdminCompleted;
            PanelAdmin.DelegateUnitTestNextIndexSetValuesRequest delegateNextIndexSetValuesRequest;
            Task taskPerformButtonSetClick
            , taskPerformComboBoxTECComponentSelectedIndex;
            TaskStatus taskStatusPerformButtonSetClick
            , taskStatusPerformComboBoxTECComponentSelectedIndex;
            CancellationTokenSource cancelTokenSource;

            onEventUnitTestSetDataGridViewAdminCompleted = null;

            taskPerformButtonSetClick =
                taskPerformComboBoxTECComponentSelectedIndex =
                    null;

            cancelTokenSource = new CancellationTokenSource();
            // вызывается при ретрансляции панелью события имитации отправления запроса на обновление значений
            delegateNextIndexSetValuesRequest = delegate(FormChangeMode.KeyDevice next_key, TECComponent comp, DateTime date, CONN_SETT_TYPE type, IEnumerable <int> list_id_rec, string [] queries) {
                Assert.IsNotNull(list_id_rec);
                Assert.IsFalse(list_id_rec.ToArray().Length < 24);
                //TODO: проверка значений массива на истинность (сравнить с идентификаторами из таблицы БД)

                nextKey = next_key;

                mesDebug = $"ТЭЦ={comp.tec.name_shr}; комп.={comp.name_shr};{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT.ToString()}]: [{queries[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT]}])"
                           + $"{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE.ToString()}]: [{queries[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE]}]"
                           + $"{Environment.NewLine}(идентификаторы: [{string.Join(";", list_id_rec.Select(id => id.ToString()).ToArray())}]";

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);
            };
            // вызывается при завершении заполнения 'DatagridView' значениями
            onEventUnitTestSetDataGridViewAdminCompleted = delegate() {
                mesDebug = "Handler On 'EventUnitTestSetDataGridViewAdminCompleted'...";

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);

                if (prevKey.Equals(nextKey) == true)
                {
                    // старт задачи сохранения значений
                    taskPerformButtonSetClick = Task.Factory.StartNew(delegate() {
                        panel.PerformButtonSetClick(delegateNextIndexSetValuesRequest);
                    });
                }
                else
                if (!(nextKey.Id < 0))
                {
                    taskPerformComboBoxTECComponentSelectedIndex = Task.Factory.StartNew(delegate() {
                        // установить новый индекс (назначить новый компонент-объект)
                        panel.PerformComboBoxTECComponentSelectedKey(prevKey = nextKey);
                    });
                }
                else
                {
                    ;
                }
            };

            try {
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.EventUnitTestSetDataGridViewAdminCompleted += onEventUnitTestSetDataGridViewAdminCompleted;

                //task.ContinueWith (t => {
                //}
                //, cancelTokenSource.Token);

                int cnt   = 0
                , cnt_max = 26;
                // исходные состояния задач
                taskStatusPerformButtonSetClick =
                    Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status : TaskStatus.WaitingForActivation;
                taskStatusPerformComboBoxTECComponentSelectedIndex =
                    Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status : TaskStatus.WaitingForActivation;

                while ((cnt++ < cnt_max) &&
                       (!(nextKey == FormChangeMode.KeyTECComponentEmpty)))
                {
                    // ожидать
                    Thread.Sleep(1000);
                    // сообщение для индикации ожидания
                    System.Diagnostics.Debug.WriteLine($"Ожидание: счетчик <{cnt}> из <{cnt_max}>...");
                }

                // состояния задач по завершению цикла
                taskStatusPerformButtonSetClick =
                    Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status : taskStatusPerformButtonSetClick;
                taskStatusPerformComboBoxTECComponentSelectedIndex =
                    Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status : TaskStatus.WaitingForActivation;
                System.Diagnostics.Debug.WriteLine(string.Format("Окончание ожидания <{0}>, задача-Click is <{1}>, задача-Selected is <{2}>, nextIndex={3}..."
                                                                 , cnt
                                                                 , Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status.ToString() : "не создана"
                                                                 , Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status.ToString() : "не создана"
                                                                 , nextKey));
            } catch (Exception e) {
                System.Diagnostics.Debug.WriteLine(e.Message);

                Assert.Fail(e.Message);
            }
        }
        public void Test_Export_PBRValues()
        {
            panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
            panel.ModeGetRDGValues  = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
            Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
            Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
            Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
            // проверка наличия необходимых "статических" форм
            Assert.IsNotNull(FormMain.formGraphicsSettings);
            Assert.IsNotNull(FormMain.formParameters);

            string mesDebug = string.Empty;

            FormChangeMode.KeyDevice prevKey = FormChangeMode.KeyTECComponentEmpty
            , nextKey = FormChangeMode.KeyTECComponentEmpty;
            Action onEventUnitTestSetDataGridViewAdminCompleted;

            AdminTS_KomDisp.DelegateUnitTestExportPBRValuesRequest delegateExportPBRValuesRequest;
            Task       taskPerformButtonExportPBRValuesClick;
            TaskStatus taskStatusPerformButtonExportPBRValuesClick;
            CancellationTokenSource cancelTokenSource;

            onEventUnitTestSetDataGridViewAdminCompleted = null;

            taskPerformButtonExportPBRValuesClick =
                null;

            cancelTokenSource = new CancellationTokenSource();
            // вызывается при ретрансляции панелью события имитации отправления запроса на обновление значений
            delegateExportPBRValuesRequest = delegate(FormChangeMode.KeyDevice next_key, DateTime date, FormChangeMode.KeyDevice current_key, IEnumerable <FormChangeMode.KeyDevice> listTECComponentKey) {
                Assert.IsNotNull(listTECComponentKey);

                mesDebug = string.Format("Handler On 'EventUnitTestExportPBRValuesRequest': NextKey={0}, Date={1}, CurrentKey={2}, ListKey=<Count={3}, List={4}>..."
                                         , next_key
                                         , date.ToShortDateString()
                                         , current_key
                                         , listTECComponentKey.Count()
                                         , string.Join(",", listTECComponentKey));

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);

                prevKey = nextKey;
                nextKey = next_key;

                //TODO: проверка значений аргументов на истинность
                if (nextKey.Id > 0)
                {
                    Assert.AreNotEqual(DateTime.MinValue, date);
                    Assert.IsTrue(listTECComponentKey.Count() > 0);
                    Assert.AreEqual(nextKey, listTECComponentKey.ToArray() [0]);
                }
                else
                {
                    // ожидать (в 'onEventUnitTestSetDataGridViewAdminCompleted') штатное завершение
                    ;
                }
            };
            // вызывается при завершении заполнения 'DatagridView' значениями
            onEventUnitTestSetDataGridViewAdminCompleted = delegate() {
                mesDebug = string.Format("Handler On 'EventUnitTestSetDataGridViewAdminCompleted': PrevIndex={0}, NextIndex={1}..."
                                         , prevKey, nextKey);

                if (prevKey.Equals(nextKey) == true)
                {
                    // старт задачи сохранения значений
                    taskPerformButtonExportPBRValuesClick = Task.Factory.StartNew(delegate() {
                        panel.PerformButtonExportPBRValuesClick(delegateExportPBRValuesRequest);
                    });
                }
                else if (nextKey.Id == 0)
                {
                    Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                    Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                    // штатное завершение
                    nextKey.Id = -1;
                }
                else
                {
                    ;
                }

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);
            };

            try {
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.EventUnitTestSetDataGridViewAdminCompleted += onEventUnitTestSetDataGridViewAdminCompleted;

                // исходные состояния задач
                taskStatusPerformButtonExportPBRValuesClick =
                    Equals(taskPerformButtonExportPBRValuesClick, null) == false ? taskPerformButtonExportPBRValuesClick.Status : TaskStatus.WaitingForActivation;

                int cnt   = 0
                , cnt_max = 26;
                while ((cnt++ < cnt_max) &&
                       (!(nextKey.Id < 0)))
                {
                    // ожидать
                    Thread.Sleep(1000);
                    // сообщение для индикации ожидания
                    System.Diagnostics.Debug.WriteLine($"Ожидание: счетчик <{cnt}> из <{cnt_max}>...");
                }

                // состояния задач по завершению цикла
                taskStatusPerformButtonExportPBRValuesClick =
                    Equals(taskPerformButtonExportPBRValuesClick, null) == false ? taskPerformButtonExportPBRValuesClick.Status : taskStatusPerformButtonExportPBRValuesClick;
                System.Diagnostics.Debug.WriteLine(string.Format("Окончание ожидания <{0}>, задача-Click is <{1}>, nextIndex={2}..."
                                                                 , cnt
                                                                 , Equals(taskPerformButtonExportPBRValuesClick, null) == false ? taskPerformButtonExportPBRValuesClick.Status.ToString() : "не создана"
                                                                 , nextKey));

                Assert.IsFalse(cnt > cnt_max);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
            } catch (Exception e) {
                System.Diagnostics.Debug.WriteLine(e.Message);

                Assert.Fail(e.Message);
            }
        }
示例#17
0
        public override void SaveRDGValues(FormChangeMode.KeyDevice key, DateTime date, bool bCallback)
        {
            m_prevDate = date.Date;

            SaveChanges();
        }
示例#18
0
            /// <summary>
            /// Сохранение внесенных изменений
            /// </summary>
            /// <returns>Ошибка выполнения</returns>
            public override ASUTP.Helper.Errors SaveChanges()
            {
                ASUTP.Helper.Errors errRes     = ASUTP.Helper.Errors.NoError,
                                    bErr       = ASUTP.Helper.Errors.NoError;
                INDEX_WAITHANDLE_REASON indxEv = INDEX_WAITHANDLE_REASON.SUCCESS;

                m_evSaveChangesComplete.Reset();

                lock (m_lockResSaveChanges)
                {
                    m_listResSaveChanges.Clear();
                }

                FormChangeMode.KeyDevice prevKeyTECComponent = CurrentKey;

                foreach (RDGStruct[] curRDGValues in m_listCurRDGValues)
                {
                    bErr = ASUTP.Helper.Errors.NoError;

                    ResetSyncState();

                    if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                    {
                        indxEv = WaitAny(Constants.MAX_WATING, true);
                        if (indxEv == 0)
                        {
                            CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                            curRDGValues.CopyTo(m_curRDGValues, 0);

                            bErr = base.BaseSaveChanges();
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.GTP)
                    {
                        indxEv = WaitAny(Constants.MAX_WATING, true);
                        if (indxEv == 0)
                        {
                            CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                            curRDGValues.CopyTo(m_curRDGValues, 0);

                            bErr = base.BaseSaveChanges();
                        }
                        else
                        {
                            ASUTP.Logging.Logg().Error($"AdminTS_LK::SaveChanges () - <{indxEv}>...", ASUTP.Logging.INDEX_MESSAGE.NOT_SET);

                            break;
                        }
                    }
                    ;

                    lock (m_lockResSaveChanges)
                    {
                        m_listResSaveChanges.Add(bErr);

                        if (!(bErr == ASUTP.Helper.Errors.NoError) &&
                            (errRes == ASUTP.Helper.Errors.NoError))
                        {
                            errRes = bErr;
                        }
                        else
                        {
                            ;
                        }
                    }
                }

                CurrentKey = prevKeyTECComponent;

                //if (indxEv == 0)
                //if (errRes == Errors.NoError)
                m_evSaveChangesComplete.Set();
                //else ;

                //??? почему AdminValues
                saveComplete.Invoke((m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED) == true) ? (int)StatesMachine.SavePPBRValues : (int)StatesMachine.SaveAdminValues);

                return(errRes);
            }
示例#19
0
 public TecViewSobstvNyzhdy(FormChangeMode.KeyDevice key)
     : base(key, TECComponentBase.TYPE.ELECTRO)
 {
 }
示例#20
0
            /// <summary>
            /// Сохранение внесенных изменений
            /// </summary>
            /// <returns>Ошибка выполнения</returns>
            public override ASUTP.Helper.Errors SaveChanges()
            {
                ASUTP.Helper.Errors errRes = ASUTP.Helper.Errors.NoError,
                                    bErr   = ASUTP.Helper.Errors.NoError;
                int indxEv = -1;

                m_evSaveChangesComplete.Reset();

                lock (m_lockResSaveChanges)
                {
                    m_listResSaveChanges.Clear();
                }

                FormChangeMode.KeyDevice prevKeyTECComponent = CurrentKey;

                foreach (RDGStruct[] curRDGValues in m_listCurRDGValues)
                {
                    bErr = ASUTP.Helper.Errors.NoError;

                    for (INDEX_WAITHANDLE_REASON i = INDEX_WAITHANDLE_REASON.ERROR; i < (INDEX_WAITHANDLE_REASON.ERROR + 1); i++)
                    {
                        ((ManualResetEvent)m_waitHandleState[(int)i]).Reset();
                    }

                    if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.TG)
                    {
                        indxEv = WaitHandle.WaitAny(m_waitHandleState);
                        if (indxEv == 0)
                        {
                            CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                            curRDGValues.CopyTo(m_curRDGValues, 0);

                            bErr = base.BaseSaveChanges();
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    if (m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)].Mode == FormChangeMode.MODE_TECCOMPONENT.GTP)
                    {
                        indxEv = WaitHandle.WaitAny(m_waitHandleState);
                        if (indxEv == 0)
                        {
                            CurrentKey = m_listKeyTECComponentDetail[m_listCurRDGValues.IndexOf(curRDGValues)];

                            curRDGValues.CopyTo(m_curRDGValues, 0);

                            bErr = base.BaseSaveChanges();
                        }
                        else
                        {
                            break;
                        }
                    }
                    ;

                    lock (m_lockResSaveChanges)
                    {
                        m_listResSaveChanges.Add(bErr);

                        if (!(bErr == ASUTP.Helper.Errors.NoError) &&
                            (errRes == ASUTP.Helper.Errors.NoError))
                        {
                            errRes = bErr;
                        }
                        else
                        {
                            ;
                        }
                    }
                }

                CurrentKey = prevKeyTECComponent;

                //if (indxEv == 0)
                //if (errRes == Errors.NoError)
                m_evSaveChangesComplete.Set();
                //else ;

                //??? почему AdminValues
                saveComplete.Invoke((m_markSavedValues.IsMarked((int)INDEX_MARK_PPBRVALUES.PBR_SAVED) == true) ? (int)StatesMachine.SavePPBRValues : (int)StatesMachine.SaveAdminValues);

                return(errRes);
            }
示例#21
0
 public void PerformComboBoxTECComponentSelectedKey(FormChangeMode.KeyDevice newKey)
 {
     comboBoxTecComponent.SelectedItem = comboBoxTecComponent.Items.Cast <ComboBoxItem>().FirstOrDefault(item => item.Tag == newKey);
 }
示例#22
0
 protected override void createTecView(FormChangeMode.KeyDevice key)
 {
     m_tecView = new TecViewStandard(key);
 }
示例#23
0
        /// <summary>
        /// Добавить состояния для запроса получения значений 'TecViewAlarm'
        /// </summary>
        /// <param name="key">Ключ компонента</param>
        /// <param name="date">Дата запрашиваемых значений</param>
        public override void GetRDGValues(FormChangeMode.KeyDevice key, DateTime date)
        {
            m_prevDate = m_curDate;
            m_curDate  = date.Date;

            ClearStates();

            adminValuesReceived = false;

            if ((m_tec.GetReadySensorsStrings(_type) == false))
            {
                AddState((int)StatesMachine.InitSensors);
            }
            else
            {
                ;
            }

            if (currHour == true)
            {
                AddState((int)StatesMachine.CurrentTimeView);
            }
            else
            {
                ;
            }

            //??? а где AISKUE+SOTIASSO
            if (m_arTypeSourceData[(int)HDateTime.INTERVAL.HOURS] == CONN_SETT_TYPE.DATA_AISKUE)
            {
                AddState((int)StatesMachine.Hours_Fact);
            }
            else
            if ((m_arTypeSourceData[(int)HDateTime.INTERVAL.HOURS] == CONN_SETT_TYPE.DATA_SOTIASSO_3_MIN) ||
                (m_arTypeSourceData[(int)HDateTime.INTERVAL.HOURS] == CONN_SETT_TYPE.DATA_SOTIASSO_1_MIN) ||
                (m_arTypeSourceData[(int)HDateTime.INTERVAL.HOURS] == CONN_SETT_TYPE.DATA_SOTIASSO))
            {
                AddState((int)StatesMachine.Hours_TM);
            }
            else
            {
                ;
            }

            if (m_arTypeSourceData[(int)HDateTime.INTERVAL.MINUTES] == CONN_SETT_TYPE.DATA_AISKUE)
            {
                AddState((int)StatesMachine.CurrentMins_Fact);
            }
            else
            if ((m_arTypeSourceData[(int)HDateTime.INTERVAL.MINUTES] == CONN_SETT_TYPE.DATA_SOTIASSO_3_MIN) ||
                (m_arTypeSourceData[(int)HDateTime.INTERVAL.MINUTES] == CONN_SETT_TYPE.DATA_SOTIASSO_1_MIN) ||
                (m_arTypeSourceData[(int)HDateTime.INTERVAL.MINUTES] == CONN_SETT_TYPE.DATA_SOTIASSO))
            {
                AddState((int)StatesMachine.CurrentMins_TM);
            }
            else
            {
                ;
            }

            if (m_bLastValue_TM_Gen == true)
            {
                AddState((int)StatesMachine.LastValue_TM_Gen);
            }
            else
            {
                ;
            }

            AddState((int)StatesMachine.PPBRValues);
            AddState((int)StatesMachine.AdminValues);
        }
示例#24
0
 /// <summary>
 /// Конструктор - основной (параметры - базового класа)
 /// </summary>
 /// <param name="key">Ключ элемента</param>
 public TecViewAlarm(FormChangeMode.KeyDevice key)
     : base(key, TECComponentBase.TYPE.ELECTRO)
 {
     updateGUI_Fact = new IntDelegateIntIntFunc(AlarmRegistred);
 }