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 ()"); } }
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(); }
public LabelCustomTecViewProfile(FormChangeMode.KeyDevice key, LabelViewProperties properties) : this() { Key = key; Properties = properties; }
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 ()"); } }
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())); }
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); }
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); }
/// <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 { ; //Это не ГТП } } }
/// <summary> /// Попытка итерации /// </summary> /// <param name="nameElem">имя опрашеваемого компонента</param> public void AttemptIter(FormChangeMode.KeyDevice key) { if (currentIter == CountIter) { ClearCounter(); } else { ; } Iters [currentIter] = key; currentIter++; commonTotalIter++; reportIter(getTextReportSuccessIter()); }
/// <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 { ; //Это не ГТП } } }
/// <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); }
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); }
/// <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 { ; } }
/// <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); } }
public override void SaveRDGValues(FormChangeMode.KeyDevice key, DateTime date, bool bCallback) { m_prevDate = date.Date; SaveChanges(); }
/// <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); }
public TecViewSobstvNyzhdy(FormChangeMode.KeyDevice key) : base(key, TECComponentBase.TYPE.ELECTRO) { }
/// <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); }
public void PerformComboBoxTECComponentSelectedKey(FormChangeMode.KeyDevice newKey) { comboBoxTecComponent.SelectedItem = comboBoxTecComponent.Items.Cast <ComboBoxItem>().FirstOrDefault(item => item.Tag == newKey); }
protected override void createTecView(FormChangeMode.KeyDevice key) { m_tecView = new TecViewStandard(key); }
/// <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); }
/// <summary> /// Конструктор - основной (параметры - базового класа) /// </summary> /// <param name="key">Ключ элемента</param> public TecViewAlarm(FormChangeMode.KeyDevice key) : base(key, TECComponentBase.TYPE.ELECTRO) { updateGUI_Fact = new IntDelegateIntIntFunc(AlarmRegistred); }