上面附上的是我过去成功用于从设备读取频率数据的 LabVIEW 代码。我也经常在我的属性节点和 while 循环之间使用 Start Task VI。
我正在尝试用 C# 编写代码。到目前为止,我已经成功地在我的设备 USB-6363 上对模拟输出和模拟输入进行了编码(所以我知道我能够使用 C# 成功地从设备写入和读取数据)。
我还使用万用表(帖子底部的 Grainger 链接)读取频率数据(设备在图片中设置为橙色 Hz 模式)。
但是,我的 C# 代码似乎在读取频率数据时出现问题。附上我的 C# 代码。当我尝试运行此程序时,出现以下错误。这与我在使用名为“MeasDigFreqBuffCont_ExtClk_ArmStart.2013”的示例程序时遇到的错误相同。我展示的代码只是创建任务,稍后我会在程序的不同部分调用代码,这就是我得到错误的方式。
- - - - - - - - - - - - - - - - - - - - - - - - - 开始错误代码 - - - - - - - - - - - - - - - - - - - - - - - - -
{Error=-200077 Message="请求的值不是此属性支持的值。属性值可能无效,因为它与另一个属性冲突。\n\n属性: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);