public void StartWeightNewGoogs(WaitWeight[] pWeight, bool pIsIncrease = true) { OnScalesLog($"StartWeightNewGoogs=>{string.Join(",", pWeight.ToList())}"); IsIncrease = pIsIncrease; WaitWeight = pWeight; //if(WaitWeight.Max(r => r.Max) <= Delta) TooLightWeight = WaitWeight.Max(r => r.Max) <= Delta; StateScale = eStateScale.WaitGoods; NewEvent(); }
public bool FixedWeight() { if (StateScale == eStateScale.BadWeight || StateScale == eStateScale.WaitGoods) { Array.Resize(ref WaitWeight, WaitWeight.Length + 1); WaitWeight[WaitWeight.Length - 1] = new WaitWeight { Min = СurrentlyWeight - Delta, Max = СurrentlyWeight + Delta }; StateScale = eStateScale.Stabilized; NewEvent(); return(true); } else { return(false); } }
/// <summary> /// Подія від контрольної ваги. /// </summary> /// <param name="weight">Власне вага</param> /// <param name="isStable">Чи платформа стабільна</param> public void OnScalesData(double weight, bool isStable) { OnScalesLog($"OnScalesData weight{weight} isStable {isStable}"); eStateScale OldeStateScale = StateScale; (weight, isStable) = MidlWeight.AddValue(weight, isStable); СurrentlyWeight = BeforeWeight - weight; if (BeforeWeight == 0d && WaitWeight == null) // Якщо товару на вазі не повинно бути (Завершений/анулюваний/Новий чек ) { if (StateScale != eStateScale.WaitGoods) { StateScale = Math.Abs(СurrentlyWeight) <= Delta ? eStateScale.Stabilized : eStateScale.WaitClear; } } else // { if (WaitWeight == null) //Якщо не чекаємо товар але вага змінилась. { //Якщо вийшли за межі похибки if (Math.Abs(СurrentlyWeight) > Delta) { StateScale = eStateScale.NotStabilized; //StartTimer(); } else { StateScale = eStateScale.Stabilized; } } else //Якщо очікуємо на товар { if (IsRightWeight(СurrentlyWeight)) { //if (!(StateScale == eStateScale.StartStabilized || StateScale == eStateScale.Stabilized)) //{ StateScale = eStateScale.StartStabilized; //StartTimer(); //} //else // MidlWeight.AddValue(СurrentlyWeight); } } //Якщо вийшли за межі похибки if (StateScale == eStateScale.WaitGoods && Math.Abs(СurrentlyWeight) > Delta) { StateScale = eStateScale.NotStabilized; //StartTimer(); } if (IsRightWeight(СurrentlyWeight)) { if (!(StateScale == eStateScale.StartStabilized || StateScale == eStateScale.Stabilized)) { StateScale = eStateScale.Stabilized; //StartTimer(); } // else // MidlWeight.AddValue(СurrentlyWeight); } else { if (StateScale == eStateScale.StartStabilized || StateScale == eStateScale.Stabilized) { //StopTimer(); StateScale = eStateScale.NotStabilized; //StartTimer(); } } } // Якщо змінився стан Повідомляєм головній програмі. if (OldeStateScale != StateScale) { NewEvent(); } }