Exemple #1
0
        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();
        }
Exemple #2
0
 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);
     }
 }
Exemple #3
0
        /// <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();
            }
        }