Esempio n. 1
0
        //*********************************************************************
        public void SendData(SimulatorPacket pack)
        {
            CheckScanConditionOnSend();
            int Rate  = pack.getTransmitRate();
            int sleep = (int)(600 / Rate);

            lock (RfSync)
            {
                try{
                    RF_STATUS = RFStatus.Tx;
                    short OperateChannel = this.getOperateChannel();
                    int   try_counter    = 0;
                    while (!Medium.Registration(this.Freq, OperateChannel, this.x, this.y, sleep))
                    {
                        Thread.Sleep(new TimeSpan(randomWait.Next(20, 50)));
                        if (try_counter++ > 200)
                        {
                            return;
                        }
                    }
                    this.MACLastTrnsmitRate = pack.getTransmitRate();
                    Medium.SendData(pack);
                }
                catch (Exception ex) {
                    AddToLog("SendData:[" + this.GetType() + "] " + ex.Message);
                    MessageBox.Show("SendData :" + ex.Message);
                }

                RF_STATUS = RFStatus.None;
            }
            if (pack.GetType() == typeof(Data))
            {
                _DataSent++;
            }
        }
Esempio n. 2
0
        //*********************************************************************
        private void ThreadableSendData(Key _Pk, object _ref)
        {
            ArrayList       _temp = (ArrayList)_packets[_Pk];
            SimulatorPacket p     = (SimulatorPacket)_ref;
            int             Rate  = p.getTransmitRate();
            int             sleep = GetObjectSize(p) / Rate;

            //Thread.Sleep(sleep);
            Thread.Sleep(new TimeSpan(sleep * 500));
            //AddToLog("Sleep for :" + sleep);
            if (_temp != null)
            {
                lock (_packets)
                {
                    // if (_temp != null)
                    // {
                    if (_temp.Contains(_ref))
                    {
                        _temp.Remove((SimulatorPacket)_ref);
                    }

                    if (_temp.Count > 0)
                    {
                        _packets[_Pk] = _temp;
                    }
                    else
                    {
                        _packets.Remove(_Pk);
                    }
                    // }
                }
            }
        }
Esempio n. 3
0
        //*********************************************************************
        // [MethodImpl(MethodImplOptions.Synchronized)]
        private static void ThreadableSendData(Key _Pk, object _ref)
        {
            EventArgs e     = new EventArgs();
            int       sleep = 0;

            try
            {
                WeHavePacketsToSend(_ref, e);
                SimulatorPacket p    = (SimulatorPacket)_ref;
                int             Rate = p.getTransmitRate();
                //long ps = GetObjectSize(p);
                sleep = (int)(600 / Rate);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Medium 1 ThreadableSendData" + ex.Message);
            }
            Thread.Sleep(new TimeSpan(sleep * _MediumSendDataRatio * 100));
            //AddToLog("Sleep for :" + sleep);
            _ev.WaitOne();

            ArrayList _temp = (ArrayList)_packets[_Pk];

            try
            {
                if (_temp != null)
                {
                    if (_temp.Contains(_ref))
                    {
                        _temp.Remove((SimulatorPacket)_ref);
                    }

                    //if (_temp.Count > 0)
                    //    ;// _packets[_Pk] = _temp;
                    if (_temp.Count == 0)
                    {
                        _packets.Remove(_Pk);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Medium ThreadableSendData" + ex.Message);
            }
            finally
            {
                _ev.Set();
                //if(LockWasToken) Monitor.Exit(_packets);
            }
        }