예제 #1
0
        public void RunConsumer()
        {
            while (!_stopThread)
            {
                Datacontainer container = null;
                while (!_dataQueue.TryDequeue(out container))
                {
                    Thread.Sleep(0);
                }
                _display = container.getRawDoubles().ToList();

                mmhHgValues = _convertClass.Conversation(_display);

                /*
                 * foreach (var item in _convertClass.Conversation(_display))
                 * {
                 *  if (mmhHgValues.Count < 3000)
                 *  {
                 *      mmhHgValues.Add(item);
                 *  }
                 *  if (mmhHgValues.Count >= 3001)
                 *  {
                 *      mmhHgValues.RemoveAt(0);
                 *      mmhHgValues.Add(item);
                 *  }
                 * }
                 */
                allReadings.AddRange(_display);
                Notify();
            }
        }
예제 #2
0
        private void AnalogInCallback(IAsyncResult ar)
        {
            try
            {
                if (runningTask != null && runningTask == ar.AsyncState)
                {
                    // Read the available data from the channels
                    data = analogInReader.EndReadWaveform(ar);

                    //DataToDataList(data);
                    var measurementDatacontainer = new Datacontainer();
                    measurementDatacontainer.SetRawDataSample(data);
                    _datacontainer.Enqueue(measurementDatacontainer); //Consumer producer patteren

                    analogInReader.BeginMemoryOptimizedReadWaveform(numberOfReadings, analogCallback, myTask, data);
                }
            }
            catch (DaqException exception)
            {
                // Display Errors
                runningTask = null;
                myTask.Dispose();
            }
        }