Время работы по таймеру - C#
Формулировка задачи:
Подскажите пожалуйста как посчитать время работы по таймеру, например:
Чтение регистра происходит раз в секунду, если в регистре записан "0" значит двигатель выключен, как только появляется "1" мы включаем таймер и когда снова появился "0" мы полученную цифру работы пишем в базу и всё по новой.
регистр читать умею, в базу писать умею...
Решение задачи: «Время работы по таймеру»
textual
Листинг программы
private bool isStarted = false;//флаг того, что таймер запущен. возможно напрочь не нужен, но я не сильно лез в свойства StopWatch-а private System.Diagnostics.Stopwatch swTimer = new System.Diagnostics.Stopwatch();//сам таймер. хотя таймером его назвать сложно. private int registerValue = 0; //поле, хранящее значение public int RegisterValue //свойство, для доступа к полю { get { return registerValue; } //возвращает без всяких закидонов set { //вот он страшный set, установка.. if (registerValue == value)//если значение прочиталось такое же как и было.. return; //..то нечего его обрабатывать, выход registerValue = value;//приминение прочитанного значения if (value == 0) //если значение стало нулём Stop();//..останавливаем работу таймера else Start();//если стало НЕ нулём - запускаем таймер } } public void Stop()//метод остановки таймера { if (!isStarted) return;//если не запущен - то нечего останавливать, выход swTimer.Stop();//остановка таймера Console.WriteLine(swTimer.Elapsed.ToString());//вывод отработанного времени //для ООП нужно будет создать событие и вызывать его } public void Start()//запуск таймера { isStarted = true;//установка флага запущенности swTimer.Start();//непосредственный запуск таймера } private void Register_Readed(int value) //этот метод - прочтение значения регистра { RegisterValue = value;//обращение ко свойству, которое будет обращаться к полю }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д