protected override void Next() { SensorDataItem se = new SensorDataItem { Time = count, Acceleration = (Rand.Next(0, 100) / 100.0), Force = Rand.Next(0, 5), Voltage = 220, Amperage = (3.5 + Math.Round(Rand.NextDouble(), 2) * 2.5), Rpm = Rand.Next(1300, 1475) }; Main.UpdateSensorsData(se); count++; Main.SetTimeReading((double)count); Task.Delay(100).Wait(); }
/// <summary> /// Обновляет результаты измерения из внешенго потока /// </summary> /// <param name="sensorDataItem">новые данные от датчиков</param> public void UpdateSensorsData(SensorDataItem sensorDataItem) { this.Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Normal, (ThreadStart) delegate() { var sensorDataItemWith = new SensorDataItem { Time = sensorDataItem.Time, Acceleration = sensorDataItem.Acceleration * settings.AccelerationCoef, Force = sensorDataItem.Force * settings.ForceCoef, Voltage = sensorDataItem.Voltage * settings.VoltageCoef, Amperage = sensorDataItem.Amperage * settings.AmperageCoef, Rpm = sensorDataItem.Rpm * settings.RpmCoef, }; SensorsData.Add(sensorDataItemWith); SensorsDataSource.Add(sensorDataItem); if (itemsCounter >= 7) { SensorsDataTable.ScrollIntoView(sensorDataItemWith); itemsCounter = 0; } itemsCounter++; }); }
protected override void Next() { if (!IsReading) { return; } string[] separatingChars = { " ", "\t" }; try { if (!Sensors.IsOpen) { return; } string input = Sensors.ReadLine(); input = input.Trim(); if (string.IsNullOrEmpty(input)) { throw new Exception("Пустая строка"); } // В системе используется русский разделитель целой и дробной части input = input.Replace('.', ','); string[] sdiParamsString = input.Split(separatingChars, StringSplitOptions.RemoveEmptyEntries); double[] sdiParams = new double[SDI_PARAMS_COUNT]; bool machineStoped = true; for (int i = 0; i < SDI_PARAMS_COUNT; i++) { sdiParams[i] = Double.Parse(sdiParamsString[i]); } if ((sdiParams[AMPERAGE_INDEX] != 0) || Main.settings.TestMode) { machineStoped = false; } if (machineStoped) { return; } if (SensorsTime == null) { SensorsTime = sdiParams[0]; } var curTime = sdiParams[0] - (double)SensorsTime; SensorDataItem sdi = new SensorDataItem() { Time = curTime, Acceleration = sdiParams[1], Force = sdiParams[2], Voltage = sdiParams[3], Amperage = sdiParams[4], Rpm = sdiParams[5], }; Main.UpdateSensorsData(sdi); Main.SetTimeReading(curTime); } catch (Exception) { /* * Console.WriteLine("Ошибка при чтении"); * Main.TriggerErrorReading(e); */ } }