コード例 #1
0
ファイル: ucMensajeria.cs プロジェクト: jesumarquez/lt
        private void btTerminarExceso_Click(object sender, EventArgs e)
        {
            var inicio = InicioExceso;
            var fin    = TestApp.Position.LastPosition;
            var point1 = new GPSPoint(inicio.FechaMensaje, (float)inicio.Latitud, (float)inicio.Longitud, inicio.Velocidad, GPSPoint.SourceProviders.GpsProvider, 50);
            var point2 = new GPSPoint(fin.FechaMensaje, (float)fin.Latitud, (float)fin.Longitud, fin.Velocidad, GPSPoint.SourceProviders.GpsProvider, 50);
            var limit  = Convert.ToInt32(txtExcesoPermitida.Value);

            var evt = new SpeedingTicket(TestApp.Dispositivo.Id, 0, point1, point2, Math.Max(inicio.Velocidad, fin.Velocidad), limit, null);

            Sender.Enqueue(TestApp.Config.Queue, evt, TestApp.Config.QueueType);
            btCancelarExceso_Click(sender, e);
        }
コード例 #2
0
ファイル: Entrante.cs プロジェクト: jesumarquez/lt
        public static IMessage Parse(String[] partes, INode node)
        {
            if (partes[partes.Length - 1].EndsWith("*"))
            {
                partes[partes.Length - 1] = partes[partes.Length - 1].TrimEnd('*');
            }

            if (Convert.ToInt32(partes[2]) != node.Id)
            {
                return(null);
            }

            var evpos = Posicion.ParsearPosicionCorta(partes[4]);

            var mid = Convert.ToUInt32(partes[1]);

            var      code = partes[3];
            IMessage res;

            switch (code)
            {
            case EvCode.SpeedingTicket:
                res = new SpeedingTicket(
                    node.Id,
                    mid,
                    Posicion.ParsearPosicionCorta(partes[5]),
                    evpos,
                    Speed.KnotToKm(Convert.ToInt16(partes[7])),
                    Speed.KnotToKm(Convert.ToInt16(partes[6])),
                    null);
                break;

            case EvCode.AcceleracionBrusca:
                res = FactoryBrusca(partes, node, evpos, MessageIdentifier.AccelerationEvent, mid);
                break;

            case EvCode.FrenadaBrusca:
                res = FactoryBrusca(partes, node, evpos, MessageIdentifier.DesaccelerationEvent, mid);
                break;

            default:
                res = TranslateLegacyCode(code, partes)
                      .FactoryEvent(node.Id, mid, evpos, evpos.GetDate(), null, new List <Int64> {
                    0
                });
                break;
            }
            return(res.AddStringToSend(String.Format("REV;{0}", partes[1])));
        }
コード例 #3
0
ファイル: LogictrackerUT.cs プロジェクト: jesumarquez/lt
        private static bool UrbetrackUT_ExcesoVelocidad(object sender, ExcesoVelocidad pdu)
        {
            var d = Devices.I().FindById(pdu.IdDispositivo);

            if (d == null)
            {
                return(false);
            }

            // si alguna posicion DEL TICKET esta mocha...
            if (pdu.PosicionDeTicket == null || pdu.PosicionDeTicket.Lat == 0 || pdu.PosicionFinal == null || pdu.PosicionFinal.Lat == 0)
            {
                STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("CrapReceivedCounter -> Device[{0}]: TICKET[VELOCIDAD EXCEDIDA]/MALFORMACION DE DATOS", d.LogId));
                return(true);
            }

            #region HACK FIX PARA LA VERSION 99 DEL FIRMWARE

            if (d.HackVersion99())
            {
                if (pdu.PosicionDeAviso != null && pdu.PosicionDeAviso.Lat != 0)
                {
                    var diferencia = pdu.PosicionDeTicket.Date - pdu.PosicionDeAviso.Date;

                    STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("TICKET[VELOCIDAD EXCEDIDA/DEVICE={0}]: DIFERENCIA CALCULADA {1}", d.LogId, diferencia));

                    if (diferencia.TotalSeconds > 21)
                    {
                        if (QuadTree.QuadTree.i() == null)
                        {
                            return(false);
                        }

                        // esto me indica que aplico el b-u-g
                        var claseAviso  = QuadTree.QuadTree.i().GetPositionClass(pdu.PosicionDeAviso.Lat, pdu.PosicionDeAviso.Lon);
                        var claseTicket = QuadTree.QuadTree.i().GetPositionClass(pdu.PosicionDeTicket.Lat, pdu.PosicionDeTicket.Lon);

                        if (claseAviso == -1 || claseTicket == -1)
                        {
                            return(false);
                        }

                        if (claseAviso == claseTicket)
                        {
                            return(true);
                        }

                        STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("TICKET[VELOCIDAD EXCEDIDA/DEVICE={0}/RIDER={1}]: REPARANDO EVENTO MALFORMADO X BUG v99", d.LogId, pdu.RiderIdentifier));

                        pdu.PosicionDeAviso = null;
                    }
                }

                if (pdu.PosicionDeAviso != null && pdu.PosicionDeAviso.Lat != 0)
                {
                    var duracion = pdu.PosicionFinal.Date.Subtract(pdu.PosicionDeAviso.Date).TotalSeconds;

                    if (duracion < 21)
                    {
                        return(true);
                    }
                }
            }

            #endregion

            DecorateFixWithZone(pdu.PosicionDeTicket);
            DecorateFixWithZone(pdu.PosicionDeTicket);
            DecorateFixWithZone(pdu.PosicionFinal);

            if (DataTransportLayer.IsRetransmission(d.Id, pdu.Seq))
            {
                return(false);
            }
            var msg = new SpeedingTicket(d.Id, pdu.Seq)
            {
                StartPoint     = pdu.PosicionDeAviso,
                UserIdentifier = pdu.RiderIdentifier,
                TicketPoint    = pdu.PosicionDeTicket,
                EndPoint       = pdu.PosicionFinal,
                SpeedReached   = Speed.KnotToKm(pdu.VelocidadMaximaAlcanzada),
                SpeedLimit     = Speed.KnotToKm(pdu.VelocidadMaximaPermitida),
                Tiempo         = (pdu.PosicionDeAviso ?? pdu.PosicionDeTicket).GetDate(),
            };
            Dispatcher.Dispatch(msg);
            return(true);
        }
コード例 #4
0
ファイル: VehicleState.cs プロジェクト: jesumarquez/lt
            private void OnFinInfraccion(VehicleState vehicleState)
            {
                var duracion = LastPosition.Fecha.Subtract(_inicioExceso.Fecha);

                if (duracion.TotalSeconds < 15)
                {
                    return;
                }

                var strMsg = string.Format
                                 (": Permitida {0} - Alcanzada {1} - Duracion: {2}",
                                 Convert.ToInt32(_velocidadInfraccion),
                                 Convert.ToInt32(_velocidadAlcanzada),
                                 duracion);

                var speedTicket = new SpeedingTicket(vehicleState.DeviceId,
                                                     vehicleState.NextMsgId,
                                                     _inicioExceso.ToGpsPoint(),
                                                     LastPosition.ToGpsPoint(),
                                                     _velocidadAlcanzada, _velocidadInfraccion,
                                                     string.Empty);

                var dao = new DAOFactory();

                var      dispositivo = dao.DispositivoDAO.FindById(vehicleState.DeviceId);
                var      coche       = dao.CocheDAO.FindMobileByDevice(vehicleState.DeviceId);
                Empleado chofer      = null;
                Zona     zona        = null;

                var messageSaver = new MessageSaver(dao);

                var evento = messageSaver.Save(speedTicket,
                                               MessageCode.SpeedingTicket.GetMessageCode(),
                                               dispositivo,
                                               coche,
                                               chofer,
                                               _inicioExceso.Fecha,
                                               _inicioExceso.ToGpsPoint(),
                                               LastPosition.ToGpsPoint(),
                                               strMsg, _velocidadInfraccion,
                                               _velocidadAlcanzada,
                                               null, zona);

                var infraccion = new Infraccion
                {
                    Vehiculo         = coche,
                    Alcanzado        = _velocidadAlcanzada,
                    CodigoInfraccion = Infraccion.Codigos.ExcesoVelocidad,
                    Empleado         = evento.Chofer,
                    Fecha            = _inicioExceso.Fecha,
                    Latitud          = _inicioExceso.Latitud,
                    Longitud         = _inicioExceso.Longitud,
                    FechaFin         = LastPosition.Fecha,
                    LatitudFin       = LastPosition.Latitud,
                    LongitudFin      = LastPosition.Longitud,
                    Permitido        = _velocidadInfraccion,
                    Zona             = zona,
                    FechaAlta        = DateTime.UtcNow
                };

                dao.InfraccionDAO.SaveOrUpdate(infraccion);

                Console.WriteLine(strMsg);
            }