} //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); }
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