Esempio n. 1
0
        //método que obtiene las lecturas cronologicas de cada competidor
        public void obtenLecturasPar()
        {
            foreach (Resultado r in lRes)
            {

                string sql = "SELECT rssi,UNIX_TIMESTAMP(fecha_hora) as tiempo,milis,UNIX_TIMESTAMP(fecha_hora_ini_local) as tiempo_ini_local,milis_ini_local  FROM tags,participante,salida,oleadacat WHERE salida.oleada=oleadacat.oleada AND oleadacat.categoria=participante.categoria AND participante.id_tag=tags.id_tag AND participante.id=" + r.id_participante + " ORDER BY fecha_hora,milis";
                MySqlCommand cmd = new MySqlCommand(sql, dbConn);
                MySqlDataReader rdr = cmd.ExecuteReader();

                while (rdr.Read())
                {
                    Lectura auxlec = new Lectura();
                    auxlec.rssi = System.Convert.ToDouble(rdr.GetString(0));
                    auxlec.tiempo = System.Convert.ToInt64(rdr.GetString(1));
                    auxlec.milis = System.Convert.ToInt32(rdr.GetString(2));

                    //tiempo origen de la antena
                    double dtori = System.Convert.ToInt64(rdr.GetString(3)) + (System.Convert.ToInt32(rdr.GetString(4)) / 1000.00);

                    //tiempo en segundos incluyendo los milisegundos relativo al momento de inicio de la antena
                    auxlec.tms = auxlec.tiempo + (auxlec.milis / 1000.00) - dtori;

                    //estimación de la distancia por la intensidad de la señal de respuesta
                    if (this.bcomp)
                    {
                        auxlec.d_dist = estimaDistCA(auxlec.rssi);
                    }
                    else
                    {
                        auxlec.d_dist = estimaDist(auxlec.rssi);
                    }

                    // se calcula la distancia horizontal a la meta
                    auxlec.a_dist = Math.Sqrt(auxlec.d_dist * auxlec.d_dist - h * h);

                    r.aLec.Add(auxlec);
                }
                rdr.Close();

                // MessageBox.Show(r.id_participante + " " + r.aLec.Count);

                //this.CalculaMax();
                this.trabajo_rea++;
            }
        }
Esempio n. 2
0
        //método que obtiene la minima distancia generalizada entre un Listado de lecturas y una lectura
        private double[] obtenDgV(List<Lectura> alec, Lectura lec)
        {
            double[] res = new double[2];

            res[0] = this.obtenDg(alec[0], lec);
            double daux = res[0];

            for (int i = 0; i < alec.Count; i++)
            {

                daux = this.obtenDg(alec[i], lec);

                if (daux < res[0])
                {
                    res[0] = daux;
                    if (i >= 1)
                    {

                        if (this.obtenDg(alec[i - 1], lec) < this.obtenDg(alec[i + 1], lec))
                        {
                            res[1] = this.obtenVel(alec[i - 1], alec[i]);
                        }
                        else
                        {
                            if (i < alec.Count - 1)
                            {
                                res[1] = this.obtenVel(alec[i + 1], alec[i]);
                            }
                            else
                            {
                                res[1] = this.obtenVel(alec[i - 1], alec[i]);
                            }
                        }

                    }
                    else
                    {
                        res[1] = this.obtenVel(alec[i + 1], alec[i]);
                    }
                }

            }

            return res;
        }
Esempio n. 3
0
 //metodo que calcula la velocidad promedio del intervalo entre 2 lecturas
 private double obtenVel(Lectura lref1, Lectura lref2)
 {
     return Math.Abs((lref1.a_dist - lref2.a_dist) / (lref1.tiempo - lref2.tiempo));
 }
Esempio n. 4
0
 //metodo que calcula la Distancia genralizada entre 2 lecturas
 private double obtenDg(Lectura lref1, Lectura lref2)
 {
     // return Math.Pow(lref1.d_dist - lref2.d_dist, 2) +Math.Pow(lref1.tiempo - lref2.tiempo, 2);
     return Math.Pow(lref1.d_dist - lref2.d_dist, 2);
 }