Время работы по таймеру - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста как посчитать время работы по таймеру, например: Чтение регистра происходит раз в секунду, если в регистре записан "0" значит двигатель выключен, как только появляется "1" мы включаем таймер и когда снова появился "0" мы полученную цифру работы пишем в базу и всё по новой. регистр читать умею, в базу писать умею...

Решение задачи: «Время работы по таймеру»

textual
Листинг программы
  1. private bool isStarted = false;//флаг того, что таймер запущен. возможно напрочь не нужен, но я не сильно лез в свойства StopWatch-а
  2. private System.Diagnostics.Stopwatch swTimer = new System.Diagnostics.Stopwatch();//сам таймер. хотя таймером его назвать сложно.
  3.  
  4.         private int registerValue = 0; //поле, хранящее значение
  5.         public int RegisterValue      //свойство, для доступа к полю
  6.         {
  7.             get { return registerValue; } //возвращает без всяких закидонов
  8.  
  9.  
  10.             set {                                //вот он страшный set, установка..
  11.                 if (registerValue == value)//если значение прочиталось такое же как и было..
  12.                     return;                      //..то нечего его обрабатывать, выход
  13.  
  14.                 registerValue = value;//приминение прочитанного значения
  15.                 if (value == 0) //если значение стало нулём
  16.                      Stop();//..останавливаем работу таймера
  17.                 else Start();//если стало НЕ нулём - запускаем таймер
  18.             }
  19.         }
  20.  
  21.         public void Stop()//метод остановки таймера
  22.         {
  23.             if (!isStarted) return;//если не запущен - то нечего останавливать, выход
  24.  
  25.             swTimer.Stop();//остановка таймера
  26.             Console.WriteLine(swTimer.Elapsed.ToString());//вывод отработанного времени
  27.             //для ООП нужно будет создать событие и вызывать его
  28.         }
  29.  
  30.         public void Start()//запуск таймера
  31.         {
  32.             isStarted = true;//установка флага запущенности
  33.             swTimer.Start();//непосредственный запуск таймера
  34.         }
  35.  
  36.         private void Register_Readed(int value) //этот метод - прочтение значения регистра
  37.         {
  38.             RegisterValue = value;//обращение ко свойству, которое будет обращаться к полю
  39.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут