/// <summary> /// 配置Do输出任务 /// </summary> /// <returns></returns> private API_RETURN_CODE ConfigDoTask() { API_RETURN_CODE code = API_RETURN_CODE.API_SUCCESS; try { m_doTask = new Task(); m_doTask.DOChannels.CreateChannel(GetDoPhysicalChannelName(), "", ChannelLineGrouping.OneChannelForEachLine); m_doTask.Control(TaskAction.Verify); m_doTask.Timing.SampleClockRate = m_params.DoSampleRate; m_doTask.Timing.ConfigureSampleClock("", m_doTask.Timing.SampleClockRate, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples, m_params.AoSampleCountPerFrame); // 设置Do Start Trigger源为Ao Start Trigger[默认],实现启动同步 string source = m_sysConfig.GetStartSyncSignal(); m_doTask.Triggers.StartTrigger.ConfigureDigitalEdgeTrigger(source, DigitalEdgeStartTriggerEdge.Rising); // 路由Do Sample Clcok到PFI1 //if (m_config.Debugging) //{ // Logger.Info(string.Format("route do sample clock to PFI1.")); // m_doTask.ExportSignals.SampleClockOutputTerminal = string.Concat("/" + NI_CARD_NAME_DEFAULT + "/PFI1"); //} m_doTask.Stream.WriteRegenerationMode = WriteRegenerationMode.AllowRegeneration; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(m_doTask.Stream); DigitalWaveform wave = DigitalWaveform.FromPort(m_params.DigitalTriggerSamplesPerLine, 0x01); writer.WriteWaveform(false, wave); } catch (Exception e) { Logger.Error(string.Format("config do task exception: [{0}].", e)); code = API_RETURN_CODE.API_FAILED_NI_CONFIG_DO_TASK_EXCEPTION; } return(code); }