-1

工作LabVIEW代码

上面附上的是我过去成功用于从设备读取频率数据的 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);

FLUKE (R) Fluke-115 Compact - 基本功能 数字万用表,14° 至 122°F 温度。范围

4

1 回答 1

2

格式化错误信息:

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

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

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

根据文档,您要求设备使用无效的除数。将您的更改14

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

NI为 DAQmx 安装了 C# 示例,其中包括一个用于测量频率的示例:

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

于 2016-11-10T18:04:20.570 回答