/// <summary> /// Событие таймера при котором меняется фаза поиска (погасить контрол/включить контрол) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private static void OnTimedEvent(object sender, EventArgs e) { _searchPhase = !_searchPhase; if (string.IsNullOrEmpty(_contolInSearchGuid)) { return; } var hardware = ControlProcessorHardware.GenerateByGuid(_contolInSearchGuid); if (hardware.ModuleType == HardwareModuleType.BinaryOutput) { var ev = new LampEvent { Hardware = hardware, IsOn = _searchPhase }; PostOutgoingSearchEvent(ev); } if (hardware.ModuleType == HardwareModuleType.Indicator) { var ev = new IndicatorEvent { Hardware = hardware, IndicatorText = _searchPhase ? "-------" : " " }; PostOutgoingSearchEvent(ev); } }
/// <summary> /// Прекратить поиск /// </summary> public static void StopComponentSearch() { if (string.IsNullOrEmpty(_contolInSearchGuid)) { return; } ControlEventBase ev = null; if (SoftDumpCache.ContainsKey(_contolInSearchGuid)) { ev = SoftDumpCache[_contolInSearchGuid]; } if (ev == null) { var hardware = ControlProcessorHardware.GenerateByGuid(_contolInSearchGuid); if (hardware.ModuleType == HardwareModuleType.BinaryOutput) { ev = new LampEvent { Hardware = hardware, IsOn = false }; } if (hardware.ModuleType == HardwareModuleType.Indicator || hardware.ModuleType == HardwareModuleType.LedMatrixIndicator) { ev = new IndicatorEvent { Hardware = hardware, IndicatorText = " " }; } } PostOutgoingSearchEvent(ev); _contolInSearchGuid = string.Empty; }
public IEnumerable <ControlEventBase> GetClearEvent() { if (string.IsNullOrEmpty(Connections[0].GetAssignedHardware())) { return(new ControlEventBase[0]); } var ev = new IndicatorEvent { Hardware = ControlProcessorHardware.GenerateByGuid(Connections[0].GetAssignedHardware()), IndicatorText = " ", }; // Требуется для того, чтобы при изменении, например, числа цифр в индикаторе не оставались гореть цифры _previousIndicatorText = string.Empty; return(new List <ControlEventBase> { ev }); }
public IEnumerable <ControlEventBase> GetNewEvent() { if (string.IsNullOrEmpty(Connections[0].GetAssignedHardware())) { return(null); } var text = AccessDescriptor.GetIndicatorText(); if (text == _previousIndicatorText) { return(null); } _previousIndicatorText = text; var ev = new IndicatorEvent { Hardware = ControlProcessorHardware.GenerateByGuid(Connections[0].GetAssignedHardware()), IndicatorText = text, }; return(new List <ControlEventBase> { ev }); }
public void ArccCheckIndicatorEventWithCuttedText() { const string testMotherboardId = "TestMotherboard"; var arccProcessor = new ArccHardwareDataProcessor(testMotherboardId); // Коды для текста. Код - значение // 00 - "0" // 01 - "1" // 02 - "2" // 03 - "3" // 04 - "4" // 05 - "5" // 06 - "6" // 07 - "7" // 08 - "8" // 09 - "9" // 10 - "0." // 11 - "1." // 12 - "2." // 13 - "3." // 14 - "4." // 15 - "5." // 16 - "6." // 17 - "7." // 18 - "8." // 19 - "9." // 20 - " " // 21 - "F" // 22 - "D" // 23 - "C" // 24 - "-" - зажжённый средний сегмент // 25 - "_" - зажжённый нижний сегмент // 26 - "¯" - зажжённый верхний сегмент // 27 - "I" // 28 - "r" // 29 - "o" // 30 - "." // 31 - "E" // Длина пакета модуля индикаторов - 10 байт // Текст для вывода "56" var testOutputDataForIndicatorModule = new byte[] { 5, // 5 - признак группы плат индикаторов 3, // ID платы 1, // команда. 1 - вывести текст 20, // " " (текст) 20, // " " (текст) 20, // " " (текст) 20, // " " (текст) 20, // " " (текст) 5, // "5" (текст) 6 // "6" (текст) }; var ev = new IndicatorEvent { Hardware = new ControlProcessorHardware { MotherBoardId = testMotherboardId, ModuleType = HardwareModuleType.Indicator, ModuleId = 3, BlockId = 0, ControlId = 0 }, IndicatorText = "56" // Максимальная длина текста - 7 символов }; var byteArray = arccProcessor.ConvertEventToByteArrayForHardware(ev); Assert.IsTrue(byteArray.SequenceEqual(testOutputDataForIndicatorModule)); }