/// <summary> /// 使用默认参数初始化配置文件属性 /// 部署到全新系统时使用该方法产生默认配置文件,并可在此基础上手动修改 /// 其余情况务必使用有参构造函数通过配置文件构造该类实例 /// </summary> public NIAIStaticConfig() { //没有配置文件路径时,初始化生成的模板 TriggerConfig = new AITriggerConfiguration() { TriggerType = AITriggerType.DigitalTrigger, TriggerSource = "/PXI1Slot3/ai/StartTrigger", TriggerEdge = Edge.Rising, MasterOrSlave = AITriggerMasterOrSlave.Slave }; ClockConfig = new AIClockConfiguration() { ClkSource = "", SampleQuantityMode = AISamplesMode.FiniteSamples, SampleRate = 1000, ClkActiveEdge = Edge.Rising, TotalSampleLengthPerChannel = 1000, ReadSamplePerTime = 500 }; ChannelConfig = new AIChannelConfiguration() { ChannelName = "PXI1Slot4/ai0:3", TerminalConfigType = AITerminalType.Differential, MinimumValue = 0, MaximumValue = 10 }; StartTime = 0.5; AutoWriteDataToFile = true; ChannelCount = 4; RemainShotsMax = 30; RemainShotsMin = 20; }
/// <summary> /// 使用AIChannelConfiguration进行简仪采集卡通道配置 /// </summary> /// <param name="jyTask">需要配置的简仪采集卡任务</param> /// <param name="channelConfiguration">通道配置</param> public static void MapAndConfigChannel(JYPXI62022AITask jyTask, AIChannelConfiguration channelConfiguration) { if (channelConfiguration.TerminalConfigType != AITerminalType.Differential) { throw new Exception("该简仪采集卡只能配置为差分输入!"); } //简仪采集卡通道用int表示,应该是一个int的集合 //var channels = ((JArray)channelConfiguration.ChannelName).ToObject<List<int>>(); 当ChannelName还是Object的时候 var channels = ChannelNameTranslator.StringToListInt(channelConfiguration.ChannelName); for (int i = 0; i < channels.Count(); i++) { jyTask.AddChannel(channels[i], channelConfiguration.MinimumValue, channelConfiguration.MaximumValue); } }
/// <summary> /// 使用默认参数初始化配置文件属性 /// 部署到全新系统时使用该方法产生默认配置文件,并可在此基础上手动修改 /// 其余情况务必使用有参构造函数通过配置文件构造该类实例 /// </summary> public JYAIStaticConfig() { ////没有配置文件路径时,初始化生成的模板 //BoardNum = 0; //TriggerConfig = new AITriggerConfiguration() //{ // TriggerType = BasicAIModel.AITriggerType.Immediate, // TriggerSource = AIDigitalTriggerSource.SSI, // TriggerEdge = Edge.Rising, // MasterOrSlave = AITriggerMasterOrSlave.NonSync //}; //ClockConfig = new AIClockConfiguration() //{ // ClkSource = AIClockSource.Internal, // SampleQuantityMode = AISamplesMode.FiniteSamples, // ClkActiveEdge = Edge.Rising, // SampleRate = 1000, // TotalSampleLengthPerChannel = 1000, // ReadSamplePerTime = 500 //}; //ChannelConfig = new AIChannelConfiguration() //{ // ChannelName = new int[] { 0, 1, 2, 3 }, // TerminalConfigType = AITerminalType.Differential, // MinimumValue = 0, // MaximumValue = 10 //}; //StartTime = 0.5; //AutoWriteDataToFile = true; //ChannelCount = 4; //RemainShotsMax = 30; //RemainShotsMin = 20; TriggerConfig = new AITriggerConfiguration(); ClockConfig = new AIClockConfiguration(); ChannelConfig = new AIChannelConfiguration(); }
private static void MapAndConfigChannel(NIScope scopeSession, AIChannelConfiguration channelConfiguration) { //todo:检查是否真的是0,1,2…… //var channels = ((JArray)channelConfiguration.ChannelName).ToObject<List<int>>(); 当ChannelName还是Object的时候 var channels = ChannelNameTranslator.StringToListInt(channelConfiguration.ChannelName); double range = channelConfiguration.MaximumValue - channelConfiguration.MinimumValue; foreach (var c in channels) { //Todo:信号输入方式无法配置 //配置信号输入方式 switch (channelConfiguration.TerminalConfigType) { //目前只支持差分 case AITerminalType.Differential: scopeSession.Channels[c.ToString()].Configure(range, 0, ScopeVerticalCoupling.DC, 1.0, true); break; default: throw new Exception("输入方式 AITerminalType 定义无效!"); } } }
/// <summary> /// 使用默认参数初始化配置文件属性 /// </summary> public NIScopeAIStaticConfig() { TriggerConfig = new AITriggerConfiguration(); ClockConfig = new AIClockConfiguration(); ChannelConfig = new AIChannelConfiguration(); }
/// <summary> /// 使用AIChannelConfiguration进行NI采集卡通道配置 /// </summary> /// <param name="niTask"></param> /// <param name="channelConfiguration"></param> public static void MapAndConfigChannel(NationalInstruments.DAQmx.Task niTask, AIChannelConfiguration channelConfiguration) { AITerminalConfiguration niTerminalConfig; switch (channelConfiguration.TerminalConfigType) { case AITerminalType.NRSE: niTerminalConfig = AITerminalConfiguration.Nrse; break; case AITerminalType.RSE: niTerminalConfig = AITerminalConfiguration.Rse; break; case AITerminalType.Differential: niTerminalConfig = AITerminalConfiguration.Differential; break; case AITerminalType.Pseudodifferential: niTerminalConfig = AITerminalConfiguration.Pseudodifferential; break; default: throw new Exception("终端输入方式(差分、单端等)配置错误!"); } //channelName是NI驱动规定格式的字符串,单位默认是伏特 niTask.AIChannels.CreateVoltageChannel((string)channelConfiguration.ChannelName, "", niTerminalConfig, channelConfiguration.MinimumValue, channelConfiguration.MaximumValue, AIVoltageUnits.Volts); }