Пример #1
0
 /// <summary>Получает <see cref="SensorState" /> исходя из значений скорости, числа зубьев и диаметра бандажа</summary>
 /// <remarks>Формула взята у Антона из комментария в исходниках программы БС-ДПС.</remarks>
 /// <param name="Speed">Значение скорости (с учётом знака: + вперёд, - назад)</param>
 /// <param name="CogsCount">Количество импульсов (зубьев ДПС) на оборот колеса</param>
 /// <param name="BondageDiameter">Диаметре бандажа колеса</param>
 /// <param name="SensorPlacement">Размещение датчика скорости</param>
 /// <param name="Channel1Condition">Достоверность измерения канала 1</param>
 /// <param name="Channel2Condition">Достоверность измерения канала 2</param>
 /// <returns>Элемент <see cref="SensorState" />, соответствующий заданному состоянию датчика</returns>
 public static SensorState Get(Double Speed, int CogsCount, Double BondageDiameter, DpsSensorPlacement SensorPlacement, ChannelCondition Channel1Condition = ChannelCondition.Good, ChannelCondition Channel2Condition = ChannelCondition.Good)
 {
     return new SensorState
            {
                Channel1Condition = Channel1Condition,
                Channel2Condition = Channel2Condition,
                Frequency = (int)Math.Round(Math.Abs(Speed) * CogsCount * 16 / 3.6 / 3.14 / BondageDiameter * 1000),
                Direction = Speed > 0
                                ? (SensorPlacement == DpsSensorPlacement.Left
                                       ? RorationDirection.Clockwise
                                       : RorationDirection.Counterclockwise)
                                : (SensorPlacement == DpsSensorPlacement.Right
                                       ? RorationDirection.Clockwise
                                       : RorationDirection.Counterclockwise)
            };
 }
Пример #2
0
 /// <summary>Получает <see cref="SensorState" /> исходя из значений скорости, числа зубьев и диаметра бандажа</summary>
 /// <remarks>Формула взята у Антона из комментария в исходниках программы БС-ДПС.</remarks>
 /// <param name="Speed">Значение скорости (с учётом знака: + вперёд, - назад)</param>
 /// <param name="CogsCount">Количество импульсов (зубьев ДПС) на оборот колеса</param>
 /// <param name="BondageDiameter">Диаметре бандажа колеса</param>
 /// <param name="SensorPlacement">Размещение датчика скорости</param>
 /// <param name="Channel1Condition">Достоверность измерения канала 1</param>
 /// <param name="Channel2Condition">Достоверность измерения канала 2</param>
 /// <returns>Элемент <see cref="SensorState" />, соответствующий заданному состоянию датчика</returns>
 public static SensorState Get(Double Speed, int CogsCount, Double BondageDiameter, DpsSensorPlacement SensorPlacement, ChannelCondition Channel1Condition = ChannelCondition.Good, ChannelCondition Channel2Condition = ChannelCondition.Good)
 {
     return(new SensorState
     {
         Channel1Condition = Channel1Condition,
         Channel2Condition = Channel2Condition,
         Frequency = (int)Math.Round(Math.Abs(Speed) * CogsCount * 16 / 3.6 / 3.14 / BondageDiameter * 1000),
         Direction = Speed > 0
                                ? (SensorPlacement == DpsSensorPlacement.Left
                                       ? RorationDirection.Clockwise
                                       : RorationDirection.Counterclockwise)
                                : (SensorPlacement == DpsSensorPlacement.Right
                                       ? RorationDirection.Clockwise
                                       : RorationDirection.Counterclockwise)
     });
 }