Пример #1
0
        private Delivery ToDelivery(string data)
        {
            var delivery = new Delivery();
            var pump = Convert.ToInt32(data.Substring(3, 2));
            var hose = Convert.ToInt32(data.Substring(5, 1));

            delivery.Date = DateTime.Now;
            delivery.Hose = new Hose(GetHoseID(pump, hose));
            delivery.TotalValue = Convert.ToDouble(data.Substring(7, 6)) / 100;
            delivery.Volume = Convert.ToDouble(data.Substring(13, 6)) / 1000;
            delivery.UnitPrice = Convert.ToDouble(data.Substring(19, 4)) / 1000;

            return delivery;
        }
Пример #2
0
        private static Delivery StringToDelivery(string command)
        {
            Delivery delivery = new Delivery();
            // TODO: Tratar caso comando venha com formato incorreto
            delivery.TotalValue = Convert.ToDouble(command.Substring(1, 6)) / 100;
            delivery.Volume = Convert.ToDouble(command.Substring(7, 6)) / 100;
            delivery.UnitPrice = Convert.ToDouble(command.Substring(13, 4)) / 1000;
            delivery.Date = new DateTime(DateTime.Now.Year, 
                                        Convert.ToInt32(command.Substring(31, 2)),
                                        Convert.ToInt32(command.Substring(25, 2)),
                                        Convert.ToInt32(command.Substring(27, 2)),
                                        Convert.ToInt32(command.Substring(29, 2)),
                                        0);
            delivery.Hose = new Hose(GetHoseID(command.Substring(23, 2)));

            return delivery;
        }
 public DeliveryProgressInfo(Delivery delivery)
 {
     Delivery = delivery;
 }
 public DeliveryEventArgs(Delivery delivery)
 {
     this.Delivery = delivery;
 }
Пример #5
0
        private void ReadEvents()
        {
            Int16 eventType = 0;

            while (!_tasksCancellation.IsCancellationRequested)
            {
                Thread.Sleep(300); // TODO: verificar tempo correto

                _eztechIO.ProcessEvents();

                var result = _eztechIO.GetNextEventType(ref eventType); // TODO: adicionar validação do retorno do comando

                switch (eventType)
                {
                    case 2: // 2 == Delivery Event
                        {
                        Int32 DeliveryID = -1;
                        Int32 PumpID = -1;
                        Int16 PumpNumber = 0;
                        Int32 HoseID = -1;
                        Int16 HoseNumber = 0;
                        Int32 GradeID = -1;
                        string GradeName = string.Empty;
                        string ShortGradeName = string.Empty;
                        Int16 PriceLevel = 1;
                        Double Price = 0;
                        Double Volume = 0;
                        Double Value = 0;
                        Int16 DeliveryState = 0;
                        Int16 DeliveryType = 0;
                        Int32 LockedBy = -1;
                        Int32 ReservedBy = -1;
                        Int32 Age = 0;
                        DateTime CompletedDT = System.DateTime.Now;
                        Int32 AttendantID = -1;
                        Double OldVolumeETot = 0;
                        Double OldVolume2ETot = 0;
                        Double OldValueETot = 0;
                        Double NewVolumeETot = 0;
                        Double NewVolume2ETot = 0;
                        Double NewValueETot = 0;
                        Int64 Tag = 0;
                        Int32 Duration = 0;

                        _eztechIO.GetNextDeliveryEventEx2(ref DeliveryID, ref PumpID, ref PumpNumber, ref HoseID, ref HoseNumber,
                                    ref GradeID, ref GradeName, ref ShortGradeName, ref PriceLevel, ref Price, ref Volume, ref Value, ref DeliveryState,
                                    ref DeliveryType, ref LockedBy, ref ReservedBy, ref Age, ref CompletedDT, ref AttendantID,
                                    ref OldVolumeETot, ref OldVolume2ETot, ref OldValueETot,
                                    ref NewVolumeETot, ref NewVolume2ETot, ref NewValueETot,
                                    ref Tag, ref Duration); // TODO: adicionar validação do retorno do comando

                        if (DeliveryID != -1 && LockedBy == -1 && OnDeliveryFinalized != null)
                        {
                            _eztechIO.LockAndClearDelivery(DeliveryID, DeliveryType); // Removes the delivery from the forecourt

                            var delivery = new Delivery();
                            delivery.Date = CompletedDT;
                            delivery.Hose = new Hose(HoseID);
                            delivery.TotalValue = Value;
                            delivery.UnitPrice = Price;
                            delivery.Volume = Volume;

                            _progressDeliveryFinalized.Report(new DeliveryProgressInfo(delivery));
                        }
                        break;
                    }
                    case 1: // 1 == Pump Event
                        {
                            Int32 PumpID = -1;
                            Int16 PumpNumber = 0;
                            Int16 State = 0;
                            Int16 ReservedFor = 0;
                            Int32 ReservedBy = -1;
                            Int32 HoseID = -1;
                            Int16 HoseNumber = 0;
                            Int32 GradeID = -1;
                            string GradeName = string.Empty;
                            string ShortGradeName = string.Empty;
                            Int16 PriceLevel = 1;
                            Double Price = 0;
                            Double Volume = 0;
                            Double Value = 0;
                            Int16 StackSize = 0;
                            string PumpName = string.Empty;
                            Int16 PhysicalNumber = 0;
                            Int16 Side = 0;
                            Int16 Address = 0;
                            Int16 PriceLevel1 = 0;
                            Int16 PriceLevel2 = 0;
                            Int16 Type = 0;
                            Int32 PortID = -1;
                            Int16 AuthMode = 0;
                            Int16 StackMode = 0;
                            Int16 PrepayAllowed = 0;
                            Int16 PreauthAllowed = 0;
                            Int16 PriceFormat = 0;
                            Int16 ValueFormat = 0;
                            Int16 VolumeFormat = 0;

                            _eztechIO.GetNextPumpEventEx(ref PumpID, ref PumpNumber, ref State, ref ReservedFor, ref ReservedBy,
                                ref HoseID, ref HoseNumber, ref GradeID, ref GradeName, ref ShortGradeName, ref PriceLevel,
                                ref Price, ref Volume, ref Value, ref StackSize, ref PumpName, ref PhysicalNumber, ref Side, ref Address, ref PriceLevel1,
                                ref PriceLevel2, ref Type, ref PortID, ref AuthMode, ref StackMode, ref PrepayAllowed, ref PreauthAllowed, ref PriceFormat,
                                ref ValueFormat, ref VolumeFormat);

                            if (OnPumpStateChanged != null && HoseID == -1)
                            {
                                var pump = new Pump(PumpID, ToPumpState(State));
                                _progressPumpStateChanged.Report(new PumpProgressInfo(pump));
                            }

                            if (OnHoseCurrentVolumeChanged != null && HoseID != -1)
                            {
                                var hose = new Hose(HoseID);
                                hose.CurrentVolume = Volume;
                                _progressHoseCurrentVolumeChanged.Report(new HoseProgressInfo(hose));
                            }

                            break;
                        }
                    default:
                        _eztechIO.DiscardNextEvent();
                        break;
                }
            }
        }