Время работы по таймеру - 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;//обращение ко свойству, которое будет обращаться к полю
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д