MotorControlModuleSDFM_TMS3.../Projects/EFC_Communication/UMLibrary/schematic/ReversCounter.cpp
2024-06-07 11:12:56 +03:00

46 lines
1.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* ReversCounter.cpp
*
* Created on: 19 мая 2021 г.
* Author: sozonov
*/
#include "ReversCounter.hh"
ReversCounter::ReversCounter(unsigned int _dir, unsigned int _mod, unsigned int _r_v) :
direction(_dir==0 ? ReversCounter::Increment : ReversCounter::Decrement), module( _mod ), reset_value( _r_v ),
counter( _r_v ) {}
//Метод сброса значения счётчика
//При вызове данного метода значение счётчика сбрасывается на значение заданое в настроках
void ReversCounter::reset() {
counter = reset_value;
}
//Метод вызываемый при переходе через границы
//В зависимости от направления счётчик либо принимает значение 0 либо module
void ReversCounter::border_crossing() {}
//todo: В файлах кода обычно комментариев нет - код должен быть понятным итак.
//Метод счёта
//При пересечении границ вызываем соттветствующий метод
void ReversCounter::count() {
//todo: Это либо switch:case, либо разные реализации модуля.
if(direction==Increment) {
if (counter == module) {
counter = 0; //обнуляем счётчик при достижении значения границы
border_crossing();
} else
counter++;
}
else if(direction==Decrement){
if (counter == 0) {
counter = module; //при уменьшении счётчика до нуля, делаем его равным верхней границе
border_crossing();
} else
counter--;
}
}