Пример #1
0
        //NI每一波采集数据到来的事件处理函数
        private void AiTask_EveryNSamplesRead(object sender, EveryNSamplesReadEventArgs e)
        {
            lock (lockObject)
            {
                if (AIState == Status.Ready)
                {
                    AIState = Status.Running;
                }

                double[,] readData = reader.ReadMultiSample(_staticConfig.ClockConfig.ReadSamplePerTime);

                times++;

                System.Diagnostics.Debug.WriteLine("Data arrival! NO." + times + " Thread no: " + Thread.CurrentThread.ManagedThreadId.ToString() + " " + StaticConfig.ChannelConfig.ChannelName);

                OnDataArrival(readData);

                if (aiTask.IsDone && times == totalTimes && !hasFinishFlag)
                {
                    //等待5s确保所有采集都完成
                    Thread.Sleep(5000);

                    hasFinishFlag = true;
                    System.Diagnostics.Debug.WriteLine("NIAI stop !!! Thread no: " + Thread.CurrentThread.ManagedThreadId.ToString() + " " + StaticConfig.ChannelConfig.ChannelName);
                    //任务结束
                    //产生任务结束事件
                    //在该事件处理函数中结束当前任务
                    OnAITaskStopped();
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 采集到N个样本的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void AiEveryNSamplesRead(object sender, EveryNSamplesReadEventArgs e)
        {
            try
            {
                // 读取16位原始数据,每次读取单次采集的像素数
                int channelNum = m_config.GetChannelNum();
                short[,] originSamples = m_aiUnscaledReader.ReadInt16(m_params.ScanPixelsPerAcquisition);
                AnalogWaveform <short>[] waves = AnalogWaveform <short> .FromArray2D(originSamples);

                short[][] samples = new short[channelNum][];
                for (int i = 0; i < channelNum; i++)
                {
                    samples[i] = m_params.GetLaserAiChannelIndex(i) >= 0 ? waves[m_params.GetLaserAiChannelIndex(i)].GetRawData() : null;
                }

                if (AiSamplesReceived != null)
                {
                    AiSamplesReceived.Invoke(this, samples);
                }
            }
            catch (Exception err)
            {
                Logger.Error(string.Format("every n samples read exception: [{0}].", err));
            }
        }
Пример #3
0
        void myTask_EveryNSamplesRead(object sender, EveryNSamplesReadEventArgs e)
        {
            try
            {
                // Read the available data from the channels
                data = analogInReader.ReadWaveform(Convert.ToInt32(samplesPerChannelNumeric.Value));

                // Plot your data here
                dataToDataGraph(data);
            }
            catch (DaqException exception)
            {
                // Display Errors
                MessageBox.Show(exception.Message);
                runningTask = null;
                myTask.Dispose();
                setEnabled_graph(false);
            }
        }
Пример #4
0
        void myTask_EveryNSamplesRead(object sender, EveryNSamplesReadEventArgs e)
        {
            try
            {
                int samplePerChannel = Convert.ToInt32(edchannel.Text);

                // Read the available data from the channels
                data = analogInReader.ReadWaveform(samplePerChannel);

                // Plot your data here
                dataToDataTable(data, ref dataTable);
            }
            catch (DaqException exception)
            {
                // Display Errors
                MessageBox.Show(exception.Message);
                runningTask = null;
                myTask.Dispose();
                btnStop.IsEnabled  = false;
                btnStart.IsEnabled = true;
            }
        }
Пример #5
0
        private void CiEveryNSamplesRead(object sender, EveryNSamplesReadEventArgs e)
        {
            try
            {
                int index = FindCiMultiChannelReaderIndex(sender);
                if (index < 0)
                {
                    Logger.Warn(string.Format("no matching ci task found: [{0}].", sender));
                    return;
                }

                int[] originSamples = m_ciChannelReaders[index].ReadMultiSampleInt32(m_params.ScanPixelsPerAcquisition);

                if (CiSamplesReceived != null)
                {
                    CiSamplesReceived.Invoke(this, index, originSamples);
                }
            }
            catch (Exception err)
            {
                Logger.Error(string.Format("every n samples read exception: [{0}].", err));
            }
        }