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

Reading CI Frequency In C# With NI USB-6363

Working LabVIEW Code

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

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

我也用万用表(post底部的Grainger link)读取频率数据(图中设备设置为橙色赫兹模式)。

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

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

{Error=-200077 Message="Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property.\n\nProperty: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor\nRequested Value: 1\nPossible Values: 4 to 4294967295\nChannel Name: Digital Frequency\n\nTask Name: _unnamedTask<0>\n\nStatus Code: -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

正在格式化错误消息:

Requested value is not a supported value for this property. The property value may be invalid because it conflicts with another property.

Property: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor
Requested Value: 1
Possible Values: 4 to 4294967295

Task Name: _unnamedTask<0>
Status Code: -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