コード例 #1
0
        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();
        }
コード例 #2
0
 /// <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++;
     });
 }
コード例 #3
0
        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);
                 */
            }
        }