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