Example #1
0
        /// <summary>
        /// intilize the MAC
        /// </summary>
        /// <param name="_Node"></param>
        public BoXMAC(Sensor _Node)
        {
            Node = _Node;
            if (Node != null)
            {
                if (Node.ID != PublicParamerters.SinkNode.ID)
                {
                    double xpasn = 1 + UnformRandomNumberGenerator.GetUniformSleepSec(MacStartUp);
                    // the swich on timer.
                    SwichOnTimer.Interval = TimeSpan.FromSeconds(xpasn);
                    SwichOnTimer.Start();
                    SwichOnTimer.Tick += ASwichOnTimer_Tick;
                    ActiveCounter      = 0;
                    // active/sleep timer:
                    ActiveSleepTimer.Interval = TimeSpan.FromSeconds(1);// the intervale is one second.
                    ActiveSleepTimer.Tick    += ActiveSleepTimer_Tick;;
                    SleepCounter = 0;

                    // intialized:
                    Node.CurrentSensorState = SensorStatus.intalized;
                    Node.Ellipse_MAC.Fill   = NodeStateColoring.IntializeColor;
                }
            }
            else
            {
                // the
                PublicParamerters.SinkNode.CurrentSensorState = SensorStatus.Active;
            }
        }
Example #2
0
        private int GetUniformDirection()
        {
            int nd = Convert.ToInt16(Math.Abs(UnformRandomNumberGenerator.GetUniform(8)));

            //checkTheNewDirection(nd);
            return(nd);
        }
        private void btn_compute_Click(object sender, RoutedEventArgs e)
        {
            PublicParamerters.FinishedRoutedPackets.Clear();

            int    NOS  = Convert.ToInt16(com_nos.Text);
            int    NOP  = Convert.ToInt16(com_nop.Text);
            double dist = Convert.ToDouble(com_distance.Text);

            List <Sensor> SelectNodesWithinDistanceN = SelectNodesWithinDistance(dist);


            if (SelectNodesWithinDistanceN != null)
            {
                // selecte The Nodes:
                List <Sensor> SelectedSn = new List <Sensor>(NOS);
                for (int i = 0; i < NOS; i++)
                {
                    int ran = Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(SelectNodesWithinDistanceN.Count - 1));
                    if (ran > 0)
                    {
                        SelectedSn.Add(SelectNodesWithinDistanceN[ran]);
                    }
                    else
                    {
                        SelectedSn.Add(SelectNodesWithinDistanceN[1]);
                    }
                }

                foreach (Sensor sen in SelectedSn)
                {
                    sen.GenerateMultipleDataPackets(NOP);
                }
            }
        }
Example #4
0
        /// <summary>
        /// how many sensor to be slected.
        /// how many packet each sensor will sent.
        /// </summary>
        /// <param name="NOS"></param>
        /// <param name="NOP"></param>
        public void RandimSelect(List <Sensor> Network, int NOS, int NOP)
        {
            // selecte The Nodes:
            List <Sensor> SelectedSn = new List <Modules.Sensor>(NOS);

            for (int i = 0; i < NOS; i++)
            {
                int ran = Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(Network.Count - 1));
                if (ran > 0)
                {
                    SelectedSn.Add(Network[ran]);
                }
                else
                {
                    SelectedSn.Add(Network[1]);
                }
            }

            // each packet sendt NOP:
            for (int i = 0; i < NOP; i++)
            {
                foreach (Sensor sen in SelectedSn)
                {
                    sen.GeneratePacketAndSent(false, Settings.Default.EnergyDistCnt, Settings.Default.TransDistanceDistCnt, Settings.Default.DirectionDistCnt, Settings.Default.PrepDistanceDistCnt);
                }
            }
        } // end class random generated.
Example #5
0
        /// <summary>
        /// how many sensor to be slected.
        /// how many packet each sensor will sent.
        /// </summary>
        /// <param name="NOS"></param>
        /// <param name="NOP"></param>
        public void RandimSelect(List <Sensor> Network, int NOS, int NOP)
        {
            // selecte The Nodes:
            List <Sensor> SelectedSn = new List <Modules.Sensor>(NOS);

            for (int i = 0; i < NOS; i++)
            {
                int ran = Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(Network.Count - 1));
                if (ran > 0)
                {
                    SelectedSn.Add(Network[ran]);
                }
                else
                {
                    SelectedSn.Add(Network[1]);
                }
            }

            // each packet sendt NOP:
            for (int i = 0; i < NOP; i++)
            {
                foreach (Sensor sen in SelectedSn)
                {
                    sen.GeneratePacekts();
                }
            }
        } // end class random generated.
Example #6
0
        /// <summary>
        /// perform the experment.
        /// </summary>
        /// <param name="distance"></param>
        /// <param name="NOS"></param>
        /// <param name="NOP"></param>
        public EnergyConsmption2 DoExperment(double distance, int NOS, int NOP)
        {
            List <Sensor> SelectNodesWithinDistanceN = SelectNodesWithinDistance(distance);

            if (SelectNodesWithinDistanceN != null)
            {
                // selecte The Nodes:
                List <Sensor> SelectedSn = new List <Modules.Sensor>(NOS);
                for (int i = 0; i < NOS; i++)
                {
                    int ran = Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(SelectNodesWithinDistanceN.Count - 1));
                    if (ran > 0)
                    {
                        SelectedSn.Add(SelectNodesWithinDistanceN[ran]);
                    }
                    else
                    {
                        SelectedSn.Add(SelectNodesWithinDistanceN[1]);
                    }
                }



                // each packet sendt NOP:
                for (int i = 0; i < NOP; i++)
                {
                    foreach (Sensor sen in SelectedSn)
                    {
                        sen.GeneratePacketAndSent();
                        //  sen.GeneratePacketAndSent(false, Settings.Default.EnergyDistCnt, Settings.Default.TransDistanceDistCnt, Settings.Default.DirectionDistCnt, Settings.Default.PrepDistanceDistCnt);
                    }
                }


                EnergyConsmption2 re = new ExpermentsResults.EnergyConsmption2();
                re.Distance = distance;
                re.NOP      = NOP;
                re.Nodes    = SelectedSn;
                re.NOS      = NOS;
                re.Number_of_RecievedPackets = PublicParamerters.SinkNode.PacketsList.Count;

                foreach (DataPacket.Datapacket pa in PublicParamerters.SinkNode.PacketsList)
                {
                    re.EnergyConsumption    += pa.UsedEnergy_Joule;
                    re.SumRoutingEfficiency += pa.RoutingEfficiency;
                }

                PublicParamerters.SinkNode.PacketsList.Clear();// clear.

                return(re);
            }
            else
            {
                System.Windows.MessageBox.Show("Distance is too short it should be 2*sensang range");
                return(null);
            }
        }
 private void RandomSelectNodes_Tick(object sender, EventArgs e)
 {
     // start sending after the nodes are intilized all.
     if (PublicParamerters.SimulationTime > PublicParamerters.MacStartUp)
     {
         int index = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParamerters.NumberofNodes - 2));
         if (index != PublicParamerters.SinkNode.ID)
         {
             myNetWork[index].GeneratePacketAndSent();
         }
     }
 }
Example #8
0
 private void RandomSelectNodes_Tick(object sender, EventArgs e)
 {
     // start sending after the nodes are intilized all.
     if (PublicParamerters.SimulationTime < stopSimlationWhen)
     {
         int index = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(myNetWork.Count - 2));
         if (index != PublicParamerters.SinkNode.ID)
         {
             myNetWork[index].GeneratePacketAndSent(false, Settings.Default.EnergyDistCnt, Settings.Default.TransDistanceDistCnt, Settings.Default.DirectionDistCnt, Settings.Default.PrepDistanceDistCnt);
         }
     }
 }
Example #9
0
 public void RandomSelectEndNodes(int numOFpACKETS)
 {
     if (PublicParamerters.SimulationTime > PublicParamerters.MacStartUp)
     {
         int index = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParamerters.NumberofNodes - 2));
         if (index != PublicParamerters.SinkNode.ID)
         {
             Sensor endNode = MainWindow.myNetWork[index];
             GenerateMultipleControlPackets(numOFpACKETS, endNode);
         }
     }
 }
Example #10
0
 private void UplinkPacketsGenerate_Tirk(object sender, EventArgs e)
 {
     UplinkalreadyGeneratedPackets++;
     if (UplinkalreadyGeneratedPackets <= UplinkTobeGeneratedPackets)
     {
         int index = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParamerters.NumberofNodes - 2));
         // myNetWork[index].GenerateDataPacket();
     }
     else
     {
         RandomSelectSourceNodesTimer.Interval = TimeSpan.FromSeconds(0);
         RandomSelectSourceNodesTimer.Stop();
         UplinkalreadyGeneratedPackets = 0;
         UplinkTobeGeneratedPackets    = 0;
     }
 }
        private void RandomSelectSourceNodesTimer_Tick(object sender, EventArgs e)
        {
            if (PublicParamerters.NumberofGeneratedPackets < xPackets)
            {
                int index = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParamerters.NumberofNodes - 2));
                myNetWork[index].GeneratePacketAndSent();

                Console.WriteLine("Target" + xPackets + ". Generated:" + PublicParamerters.NumberofGeneratedPackets.ToString());
            }
            else
            {
                RandomSelectSourceNodesTimer.Interval = TimeSpan.FromSeconds(0);
                RandomSelectSourceNodesTimer.Stop();
                xPackets = 0;
                Console.WriteLine("Finised");
            }
        }
Example #12
0
 private void DownLINKRandomSentAnumberofPackets(object sender, EventArgs e)
 {
     DownlinkAlreadyGenerated++;
     if (DownlinkAlreadyGenerated <= DownlinkTobeGenerated)
     {
         int    index   = Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParameters.NumberofNodes - 2));
         Sensor EndNode = myNetWork[index];
         PublicParameters.SinkNode.GenerateControlPacket(EndNode);
     }
     else
     {
         RandomSelectSourceNodesTimer.Interval = TimeSpan.FromSeconds(0);
         RandomSelectSourceNodesTimer.Stop();
         DownlinkAlreadyGenerated = 0;
         DownlinkTobeGenerated    = 0;
     }
 }
Example #13
0
        /// <summary>
        /// how many sensor to be slected.
        /// how many packet each sensor will sent.
        /// </summary>
        /// <param name="NOS"></param>
        /// <param name="NOP"></param>
        public void RandimSelect(List <Sensor> Network, int NOS, int NOP)
        {
            // selecte The Nodes:
            List <Sensor> SelectedSn = new List <Dataplane.Sensor>(NOS);

            for (int i = 0; i < NOS; i++)
            {
                int ran = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(Network.Count - 2));
                SelectedSn.Add(Network[ran]);
            }

            // each packet sendt NOP:
            for (int i = 0; i < NOP; i++)
            {
                foreach (Sensor sen in SelectedSn)
                {
                    sen.GenerateDataPacket();
                }
            }
        } // end class random generated.
Example #14
0
        /// <summary>
        /// intilize the MAC
        /// </summary>
        /// <param name="_Node"></param>
        public BoXMAC(Sensor _Node)
        {
            Node         = _Node;
            ActivePeriod = Periods.ActivePeriod; //初始值为系统默认值
            SleepPeriod  = Periods.SleepPeriod;  //初始值为系统默认值
            if (Node != null)
            {
                if (Node.ID != PublicParamerters.SinkNode.ID)//设置非sink节点的醒睡模式
                {
                    //为了实现异步通信,每个节点开启醒睡模式的时刻不同
                    double xpasn = UnformRandomNumberGenerator.GetUniformSleepSec(MacStartUp);
                    // the swich on timer.
                    SwichOnTimer.Interval = TimeSpan.FromSeconds(xpasn);
                    SwichOnTimer.Start();
                    SwichOnTimer.Tick += ASwichOnTimer_Tick;

                    SleepCounter  = 0; //睡计时器
                    ActiveCounter = 0; //醒计数器,表示节点处于当前模式的时间

                    // active/sleep timer:定时改变SensorState的值,分别用Active表示醒,Sleep表示睡
                    // ActiveSleepTimer.Interval = TimeSpan.FromSeconds(1);
                    ActiveSleepTimer.Interval = TimeSpan.FromMilliseconds(CheckActiveSleepTime);
                    ActiveSleepTimer.Tick    += ActiveSleepTimer_Tick;

                    //检测节点等待队列定时器的相关设置
                    QueueTimer.Interval = TimeSpan.FromMilliseconds(CheckQueueTime);
                    QueueTimer.Tick    += QueueTimer_Tick;

                    // intialized:
                    Node.CurrentSensorState = SensorState.intalized;
                    Node.Ellipse_MAC.Fill   = NodeStateColoring.IntializeColor;
                }
                else
                {
                    // sink节点的状态永远是Active
                    PublicParamerters.SinkNode.CurrentSensorState = SensorState.Active;
                }
            }
        }
Example #15
0
 /// <summary>
 /// generate packet. start by obtian.
 /// </summary>
 private void GenerateRandomPacket()
 {
     int    index  = 1 + Convert.ToInt16(UnformRandomNumberGenerator.GetUniform(PublicParamerters.NumberofNodes - 2));
     Sensor sensor = myNetWork[index];
     ObtainSinkFreshPositionMessage ob = new ObtainSinkFreshPositionMessage(sensor);
 }