예제 #1
0
 /// <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;
 }
예제 #2
0
        /// <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);
            }
        }
예제 #3
0
        /// <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();
        }
예제 #4
0
        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 定义无效!");
                }
            }
        }
예제 #5
0
 /// <summary>
 /// 使用默认参数初始化配置文件属性
 /// </summary>
 public NIScopeAIStaticConfig()
 {
     TriggerConfig = new AITriggerConfiguration();
     ClockConfig   = new AIClockConfiguration();
     ChannelConfig = new AIChannelConfiguration();
 }
예제 #6
0
        /// <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);
        }