コード例 #1
0
    }         //Receive data

    private double AddAvgVal(string str, double ts, List <Eppy.Tuple <double, double> > list)
    {
        list.RemoveAt(0);
        list.Add(Tuple.Create(ts, double.Parse(str, NumberStyles.Float, CultureInfo.InvariantCulture)));
        // beregn average

        double avg = 0;

        for (int i = 0; i < list.Count - 1; i++)
        {
            avg += (list[i].Item2 - list[i + 1].Item2) / (list[i].Item1 - list[i + 1].Item1);
        }
        // overfør average
        return(avg / list.Count);
    }
コード例 #2
0
    public void ReceiveData()
    {
        byte[] data = new byte[0];

        while (true)
        {
            data = client.Receive(ref ep);
            string json = Encoding.ASCII.GetString(data);

            if (json != "")
            {
                ts = double.Parse(json.Substring(6, 10));

                if (json.Contains("gd"))
                {
                    if (json.Contains("left"))
                    {
                        string   gdl    = json.Substring(json.IndexOf('[') + 1, 19);
                        string[] values = gdl.Split(',');

                        //gdlX = double.Parse(values[0], NumberStyles.Float, CultureInfo.InvariantCulture);
                        //gdlY = double.Parse(values[1], NumberStyles.Float, CultureInfo.InvariantCulture);
                        //gdlZ = double.Parse(values[2], NumberStyles.Float, CultureInfo.InvariantCulture);


                        //x
                        if (gdlXBuff.Count < 10)
                        {
                            gdlXBuff.Add(Tuple.Create(ts, double.Parse(values[0], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdlX = Math.Abs(AddAvgVal(values[0], ts, gdlXBuff));
                        }

                        //y
                        if (gdlYBuff.Count < 10)
                        {
                            gdlYBuff.Add(Tuple.Create(ts, double.Parse(values[1], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdlY = Math.Abs(AddAvgVal(values[1], ts, gdlYBuff));
                        }

                        //z
                        if (gdlZBuff.Count < 10)
                        {
                            gdlZBuff.Add(Tuple.Create(ts, double.Parse(values[2], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdlZ = Math.Abs(AddAvgVal(values[2], ts, gdlZBuff));
                        }
                    }
                    else
                    {
                        //right
                        string   gdl    = json.Substring(json.IndexOf('[') + 1, 19);
                        string[] values = gdl.Split(',');

                        // gdrX = double.Parse(values[0], NumberStyles.Float, CultureInfo.InvariantCulture);
                        // gdrY = double.Parse(values[1], NumberStyles.Float, CultureInfo.InvariantCulture);
                        // gdrZ = double.Parse(values[2], NumberStyles.Float, CultureInfo.InvariantCulture);


                        //x
                        if (gdrXBuff.Count < 10)
                        {
                            gdrXBuff.Add(Tuple.Create(ts, double.Parse(values[0], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdrX = Math.Abs(AddAvgVal(values[0], ts, gdrXBuff));
                        }

                        //y
                        if (gdrYBuff.Count < 10)
                        {
                            gdrYBuff.Add(Tuple.Create(ts, double.Parse(values[1], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdrY = Math.Abs(AddAvgVal(values[1], ts, gdrYBuff));
                        }

                        //z
                        if (gdrZBuff.Count < 10)
                        {
                            gdrZBuff.Add(Tuple.Create(ts, double.Parse(values[2], NumberStyles.Float, CultureInfo.InvariantCulture)));
                        }
                        else
                        {
                            gdrZ = Math.Abs(AddAvgVal(values[2], ts, gdrZBuff));
                        }
                    }
                } //gd found

                if (json.Contains("pd"))
                {
                    string pdString = json.Substring(json.IndexOf('p') + 4, 4);

                    if (json.Contains("left"))
                    {
                        /*
                         * if (pdlBuff.Count < 10)
                         * {
                         *   pdlBuff.Add(Tuple.Create(ts, double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture)));
                         * }
                         * else if (pdlBuff.Count == 10)
                         * {
                         *   pdlBuff.RemoveAt(0);
                         *   pdlBuff.Add(Tuple.Create(ts, double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture)));
                         *
                         *   // beregn average
                         *   double avg = 0;
                         *   for (int i = 0; i < pdlBuff.Count - 1; i++)
                         *   {
                         *       avg += (pdlBuff[i].Item2 - pdlBuff[i + 1].Item2) / (pdlBuff[i].Item1 - pdlBuff[i + 1].Item1);
                         *   }
                         *   // overfør average
                         *   pdl = avg / pdlBuff.Count;
                         * }
                         */
                        pdl = double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        pdr = double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture);
                        //pdr

                        /*
                         * if(pdrBuff.Count < 10)
                         * {
                         *  pdrBuff.Add(Tuple.Create(ts,double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture)));
                         *
                         * }else if(pdrBuff.Count == 10){
                         *  pdrBuff.RemoveAt(0);
                         *  pdrBuff.Add(Tuple.Create(ts,double.Parse(pdString, NumberStyles.Float, CultureInfo.InvariantCulture)));
                         *  // beregn average
                         * double avg = 0;
                         * for (int i = 0; i < pdrBuff.Count-1; i++)
                         * {
                         *   avg +=  (pdrBuff[i].Item2-pdrBuff[i+1].Item2)/(pdrBuff[i].Item1-pdrBuff[i+1].Item1);
                         * }
                         *  // overfør average
                         *  pdr = avg/pdlBuff.Count;
                         *
                         * }
                         */
                    }
                } //pd

                if (json.Contains("gy"))
                {
                    string gyString = json.Substring(json.IndexOf('[') + 1);
                    gyString = gyString.Substring(0, gyString.Length - 3);

                    string[] values = gyString.Split(',');

                    gyX = float.Parse(values[0], NumberStyles.Float, CultureInfo.InvariantCulture);
                    gyY = float.Parse(values[1], NumberStyles.Float, CultureInfo.InvariantCulture);
                    gyZ = float.Parse(values[2], NumberStyles.Float, CultureInfo.InvariantCulture);
                }
            } //end json
        }     //while true
    }         //Receive data