private void timer_Tick(object sender, EventArgs e) { DispatcherTimer tmpTimer = sender as DispatcherTimer; //MessageBox.Show(DateTime.Now.ToString("HH:mm:ss")); //CounterSystem tmpSystemDevice = systemDevice; int[] numberOfActiveDevices = (int[])tmpTimer.Tag; Debug.WriteLine(numberOfActiveDevices); int index = 0; bool readyToReadData = true; foreach (var device in numberOfActiveDevices) { if (device == 1) { if (TransferData.DeviceFinishedMeasurements(systemDevice.device[index])) { //numberOfActiveDevices++; numberOfActiveDevices[index] = 0; } } readyToReadData &= !Convert.ToBoolean(device); ++index; } if (readyToReadData) { timer.Stop(); //READ DATA from slave devices //systemDevice.device[0].counter[0].CounterNumber foreach (var device in systemDevice.device) { foreach (var counter in device.counter) { if (counter.Active) { UInt32 resultValueFromCounter; double measuredCounterValue; //counter.CounterNumber //Read Counter value resultValueFromCounter = TransferData.ReadCounterMeasuredValue(counter, (byte)ModbusCommand.ReadPulsesFromCounter); measuredCounterValue = resultValueFromCounter * counter.CounterPulsesPerLiter; measurementsResults.systemMeasurementsResults[device.DeviceNumber - 1].deviceMeasurementsResults[counter.CounterNumber - 1].counterMeasurementsResults[currentMeasurementNumber - 1].MeasuredCounterValue = measuredCounterValue; //Read Examplary Counter value resultValueFromCounter = TransferData.ReadCounterMeasuredValue(counter, (byte)ModbusCommand.ReadExamplaryValue); measuredCounterValue = resultValueFromCounter * counter.CounterPulsesPerLiter; measurementsResults.systemMeasurementsResults[device.DeviceNumber - 1].deviceMeasurementsResults[counter.CounterNumber - 1].counterMeasurementsResults[currentMeasurementNumber - 1].MeasuredExamplaryCounterValue = measuredCounterValue; } } } this.mainViewModel.CurrentMeasurementNumber++; } }