使用NI USB-6363在C#中读取CI频率

时间:2016-11-10 15:36:11

标签: c# labview data-acquisition

Working LabVIEW Code

上面附带的LabVIEW代码是我过去成功用来从设备读取频率数据的代码。我通常也在我的属性节点和while循环之间使用Start Task VI。

我正在尝试用C#编写代码。到目前为止,我已成功地在我的设备USB-6363上编码模拟输出和模拟输入(因此我知道我能够使用C#成功地从设备写入和读取数据)。

我还使用万用表(帖子底部的Grainger链接)来读取频率数据(设备在图片中设置的橙色Hz模式)。

但是,我的C#代码似乎在读取频率数据时遇到问题。我的C#代码已附加。当我尝试运行此程序时,我收到以下错误。这与使用名为' MeasDigFreqBuffCont_ExtClk_ArmStart.2013'的示例程序时得到的错误相同。我展示的代码只是创建任务,我稍后在我的程序中调用代码在不同的部分,这就是我得到错误的方式。

----------------------------------------------- - 开始错误代码--------------------------------------------- ----

  

{错误= -200077消息="请求的值不是受支持的值   这个性质。属性值可能无效,因为它发生冲突   与另一个属性。\ n \ nProperty:   NationalInstruments.DAQmx.CIChannel.FrequencyDivisor \ n请求值:   1 \ n可能值:4到4294967295 \ n通道名称:数字   频率\ n \ n任务名称:_unnamedTask< 0> \ n \ n状态代码:-200077"}

----------------------------------------------- - 结束错误代码--------------------------------------------- -----

在示例程序中,它要求采样时钟源(来自设备的PFI通道)。但是在LabVIEW代码中它没有要求这个。这个例子可能比我想做的更详细吗?

Task frequencyInput = new Task();

frequencyInput.CIChannels.CreateFrequencyChannel(
                "Dev1/ctr0",
                "Digital Frequency",
                200,
                15000,
                CIFrequencyStartingEdge.Rising,
                CIFrequencyMeasurementMethod.DynamicAveraging,
                0.001,
                1,
                CIFrequencyUnits.Hertz
                );


frequencyInput.CIChannels["Digital Frequency"].FrequencyTerminal = "/Dev1/PFI0";

CounterSingleChannelReader counterFreq = new CounterSingleChannelReader(frequencyInput.Stream);


double counterFreqData = counterFreq.ReadSingleSampleDouble();

txtPFI0.Text = Convert.ToString(counterFreqData);

FLUKE (R) Fluke-115 Compact - Basic Features Digital Multimeter, 14° to 122°F Temp. Range

1 个答案:

答案 0 :(得分:2)

格式化错误消息:

  

请求的值不是此属性的受支持值。属性值可能无效,因为它与另一个属性冲突。

     

属性:NationalInstruments.DAQmx.CIChannel。 FrequencyDivisor
  请求值:1
  可能的值:4到4294967295

     

任务名称:_unnamedTask< 0>
  状态代码:-200077

根据documentation,您要求设备使用无效的除数。将您的1更改为4

frequencyInput.CIChannels.CreateFrequencyChannel(
                "Dev1/ctr0",
                "Digital Frequency",
                200,
                15000,
                CIFrequencyStartingEdge.Rising,
                CIFrequencyMeasurementMethod.DynamicAveraging,
                0.001,
   /* here */   4,
                CIFrequencyUnits.Hertz
                );

NI installs C# examples for DAQmx,其中包括一个用于测量频率的内容:

C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples\DotNET4.0\Counter\Measure Digital Frequency\MeasDigFrequency_LowFreq1Ctr\CS