使用 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
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 4294967295Task 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