/// <summary> /// Calculates the calibration algorithms where the node to be calibrated is the blind node /// </summary> /// <param name="dataSet">The dataset to be processed</param> private void ExecuteCalibrationBlindNode(DataSet dataSet) { Console.WriteLine("Executing the two calibration methods"); foreach (DataRow row in dataSet.Tables[0].Rows) { currentID = row["node"].ToString(); Node CurrentNode; if (currentID == "11") { if (!AnchorNodes.Exists(AN => AN.WsnIdProperty == currentID)) { AnchorNodes.Add(new Node(row["node"].ToString(), MyDb)); CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); Console.WriteLine("Enter the position of the blind node in doubles!"); Point position = new Point(); Console.Write("X: "); position.x = Convert.ToDouble(Console.ReadLine()); Console.Write("Y: "); position.y = Convert.ToDouble(Console.ReadLine()); CurrentNode.position = new Point(position.x, position.y); } CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); CurrentNode.UpdateAnchors(row["ANode"].ToString(), Convert.ToDouble(row["RSSI"].ToString()), 1, DateTime.Now); } } RangeBasedPositioning.CalibratePathloss(AnchorNodes, RangeBasedPositioning.AverageFilter); Console.WriteLine("Normal Calibration"); Console.WriteLine(RangeBasedPositioning.pathLossExponent); Console.WriteLine(RangeBasedPositioning.baseLoss); RangeBasedPositioning.CalibratePathlossLS(AnchorNodes, RangeBasedPositioning.AverageFilter); Console.WriteLine("LS Calibration"); Console.WriteLine(RangeBasedPositioning.pathLossExponent); Console.WriteLine(RangeBasedPositioning.baseLoss); AnchorNodes.Clear(); }
/// <summary> /// Calculates the calibration algorithms /// </summary> /// <param name="dataSet">The dataset to be processed</param> private void ExecuteCalibration(DataSet dataSet) { double baseLoss = 0, pathLossExponent = 0; int counter = 0; Console.WriteLine("Executing the two calibration methods"); Console.WriteLine("Normal Calibration"); foreach (DataRow row in dataSet.Tables[0].Rows) { currentID = row["node"].ToString(); Node CurrentNode; if (currentID != "11") { if (!AnchorNodes.Exists(AN => AN.WsnIdProperty == currentID)) { AnchorNodes.Add(new Node(row["node"].ToString(), MyDb)); } CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); CurrentNode.UpdateAnchors(row["ANode"].ToString(), Convert.ToDouble(row["RSSI"].ToString()), 1, DateTime.Now); RangeBasedPositioning.CalibratePathloss(AnchorNodes, RangeBasedPositioning.NoFilter); pathLossExponent += RangeBasedPositioning.pathLossExponent; counter++; } } pathLossExponent /= counter; Console.WriteLine("baseLoss = " + RangeBasedPositioning.baseLoss.ToString()); Console.WriteLine("pathLossExponent = " + pathLossExponent.ToString()); baseLoss = 0; pathLossExponent = 0; counter = 0; AnchorNodes.Clear(); Console.WriteLine("LS Calibration"); foreach (DataRow row in dataSet.Tables[0].Rows) { currentID = row["node"].ToString(); Node CurrentNode; if (currentID != "11") { if (!AnchorNodes.Exists(AN => AN.WsnIdProperty == currentID)) { AnchorNodes.Add(new Node(row["node"].ToString(), MyDb)); } CurrentNode = AnchorNodes.Find(AN => AN.WsnIdProperty == currentID); CurrentNode.UpdateAnchors(row["ANode"].ToString(), Convert.ToDouble(row["RSSI"].ToString()), 1, DateTime.Now); RangeBasedPositioning.CalibratePathlossLS(AnchorNodes, RangeBasedPositioning.NoFilter); baseLoss += RangeBasedPositioning.baseLoss; pathLossExponent += RangeBasedPositioning.pathLossExponent; counter++; } } baseLoss /= counter; pathLossExponent /= counter; Console.WriteLine("baseLoss = " + baseLoss.ToString()); Console.WriteLine("pathLossExponent = " + pathLossExponent.ToString()); }