/// <summary> /// Подготовка данных для расчета погрешности. /// </summary> /// <param name="address">Адрес устройства.</param> /// <param name="selectedChannelsList">Выбранные каналы.</param> /// <param name="value">Значение.</param> public void ErrorCalculationPrepare(byte address, List <int> selectedChannelsList, double value, TA2007TestMode testMode) { short data = (short)(address << 12); Init(); _testMode = testMode; _errorCalculationValue = value; _selectedChannelsList = selectedChannelsList; for (int i = 0; i < _selectedChannelsList.Count; i++) { _channels[_selectedChannelsList[i] - 1] = (short)(_channels[_selectedChannelsList[i] - 1] | data); _txA.Add((byte)(_channels[_selectedChannelsList[i] - 1] >> 8)); _txB.Add((byte)_channels[_selectedChannelsList[i] - 1]); } }
/// <summary> /// Подготовка данных для проверки функционирования каналов. /// </summary> /// <param name="address">Адрес устройства.</param> /// <param name="isPhasing">Флаг фазировки.</param> /// <param name="selectedChannelsList">Выбранные каналы.</param> public void FunctionCheckPrepare(byte address, bool isPhasing, List <int> selectedChannelsList = null) { Random rnd = new Random(); SortedSet <int> phasingIndices = new SortedSet <int>(); _testMode = TA2007TestMode.FunctionCheck; short data = isPhasing? (short)(address << 12 | Constants.PHASING) : (short)(address << 12); Init(); if (selectedChannelsList == null) { _selectedChannelsList = null; for (int i = 0; i < _channels.Length; i++) { _channels[i] = (short)(_channels[i] | data); } // Добавляем фазировку случайное кол-во раз в случайные каналы. if (!isPhasing) { var phasingCount = rnd.Next(0, 32); for (int i = 0; i < phasingCount; i++) { phasingIndices.Add(rnd.Next(0, 32)); } foreach (var item in phasingIndices) { _channels[item] = (short)(_channels[item] | Constants.PHASING); } } for (int i = 0; i < _channels.Length; i++) { _txA.Add((byte)(_channels[i] >> 8)); _txB.Add((byte)_channels[i]); } } else { _selectedChannelsList = selectedChannelsList; for (int i = 0; i < _selectedChannelsList.Count; i++) { _channels[_selectedChannelsList[i] - 1] = (short)(_channels[_selectedChannelsList[i] - 1] | data); } //// Добавляем фазировку случайное кол-во раз в случайные каналы. if (!isPhasing) { var phasingCount = rnd.Next(1, _selectedChannelsList.Count + 1); for (int i = 0; i < phasingCount; i++) { phasingIndices.Add(_selectedChannelsList[rnd.Next(_selectedChannelsList.Count)] - 1); } foreach (var item in phasingIndices) { _channels[item] = (short)(_channels[item] | Constants.PHASING); } } for (int i = 0; i < _selectedChannelsList.Count; i++) { _txA.Add((byte)(_channels[_selectedChannelsList[i] - 1] >> 8)); _txB.Add((byte)_channels[_selectedChannelsList[i] - 1]); } } }