Example #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            toolStripComboBox1.SelectedIndex = toolStripComboBox1.Items.Count / 2;
            SystemSetup.getInstance().init();
            try
            {
                numPointPerLine = SystemSetup.getInstance().dev_Setup.NumFFT;
                buf1 = new BlockingCircularBuffer<byte>(numPointPerLine * 4);
                chartData = new double[chart1.Series.Count, numPointPerLine];
                serialPort1.PortName = SystemSetup.getInstance().dev_Setup.DevPortName;
                serialPort1.BaudRate = SystemSetup.getInstance().dev_Setup.BaudRate;
                originalDataDevice = serialPort1;
                cnt2 = 100;
                spikes = new ShiftBuffer<double>(numPointPerLine);
                fft_mag = new double[numPointPerLine];

                thrdDataReceived = new Thread(new ThreadStart(DataReceived));
                thrdDataReceived.Start();

                originalData.onEvent += new TimerCallback(onStopMeasure);
                toolStripButton_Start_Click(this, null);
            }
            catch (Exception ex) { }
            timer1.Enabled = true;
        }
Example #2
0
        public PriorityTaskScheduler()
        {
            //TODO: create category
            //_messageCounter = new PerformanceCounter();
            _tsp             = Convert.ToInt32(ConfigurationManager.AppSettings["TASK_SCHEDULER_PERIOD"]);
            _buferSize       = Convert.ToInt32(ConfigurationManager.AppSettings["BUFFER_SIZE"]);
            _threshold       = Convert.ToDouble(ConfigurationManager.AppSettings["SUSPENSION_THRESHOLD"]);
            _readyToRunQueue = new BlockingCircularBuffer <PeriodicTask>(_buferSize);
            _waitingQueue    = new ConcurrentQueue <Task>();

            var executor = new System.Timers.Timer(_tsp);

            executor.Elapsed += WaitingQueueToReadyToRun;
            executor.Start();

            for (int i = 0; i < Environment.ProcessorCount; i++)
            {
                _backgroundTaskFactory.StartNew(() =>
                {
                    while (true)
                    {
                        var task = _readyToRunQueue.Dequeue();
#if DEBUG
                        _log.Debug("Message Dequeued");
                        //_messageCounter.Decrement();
#endif
                        if (TryExecuteTask(task))
                        {
                            var span = DateTime.UtcNow - task.TimeCreated;
                            if (DateTime.UtcNow > task.Deadline)
                            {
                                _log.Warn(String.Format("Real-time Deadline exceeded : {0}", span.TotalMilliseconds));
                                //throw new ApplicationException("Real-time Deadline exceeded");
                            }
#if DEBUG
                            _log.Debug("Message Done");
#endif
                        }
                    }
                });
            }
        }
        public PriorityTaskScheduler()
        {
            //TODO: create category
            //_messageCounter = new PerformanceCounter();
            _tsp = Convert.ToInt32(ConfigurationManager.AppSettings["TASK_SCHEDULER_PERIOD"]);
            _buferSize = Convert.ToInt32(ConfigurationManager.AppSettings["BUFFER_SIZE"]);
            _threshold = Convert.ToDouble(ConfigurationManager.AppSettings["SUSPENSION_THRESHOLD"]);
            _readyToRunQueue = new BlockingCircularBuffer<PeriodicTask>(_buferSize);
            _waitingQueue = new ConcurrentQueue<Task>();

            var executor = new System.Timers.Timer(_tsp);
            executor.Elapsed += WaitingQueueToReadyToRun;
            executor.Start();

            for (int i = 0; i < Environment.ProcessorCount; i++)
            {
                _backgroundTaskFactory.StartNew(() =>
                {
                    while (true)
                    {
                        var task = _readyToRunQueue.Dequeue();
            #if DEBUG
                        _log.Debug("Message Dequeued");
                        //_messageCounter.Decrement();
            #endif
                        if (TryExecuteTask(task))
                        {
                            var span = DateTime.UtcNow - task.TimeCreated;
                            if (DateTime.UtcNow > task.Deadline)
                            {
                                _log.Warn(String.Format("Real-time Deadline exceeded : {0}", span.TotalMilliseconds));
                                //throw new ApplicationException("Real-time Deadline exceeded");
                            }
            #if DEBUG
                            _log.Debug("Message Done");
            #endif
                        }
                    }
                });
            }
        }