Чтение частоты CI в C# с NI USB-6363
Прикрепленный выше код LabVIEW, который я успешно использовал в прошлом для чтения частотных данных с устройства. Я также обычно использую стартовую задачу VI между узлом свойства и циклом while.
Я пытаюсь закодировать это в C#. До сих пор я успешно мог кодировать аналоговые выходы и аналоговые входы на моем устройстве, USB-6363 (так что я знаю, что могу успешно записывать и считывать данные с устройства с помощью C#).
Я также использовал мультиметры (ссылка Grainger внизу поста) для считывания данных о частоте (режим Orange Hz, на котором устройство установлено на рисунке).
Тем не менее, мой код C#, похоже, имеет проблемы с чтением данных о частоте. Мой код C# прилагается. Когда я пытаюсь запустить эту программу, я получаю следующую ошибку. Это та же ошибка, что и при использовании примера программы под названием "MeasDigFreqBuffCont_ExtClk_ArmStart.2013". Код, который я показываю, просто создает задачу, я вызываю код позже в моей программе в другом разделе, и именно так я получаю сообщение об ошибке.
------------------------------------------------- Начать Код ошибки ------------------------------------------------ -
{Error = -200077 Message = "Запрошенное значение не является поддерживаемым значением для этого свойства. Значение свойства может быть недопустимым, поскольку оно конфликтует с другим свойством.\ N \nProperty: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor\nRequested Value: 1\n Возможные значения: от 4 до 4294967295\n Канальное имя: цифровая частота \n\nTask Name: _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® Fluke-115 Compact - Основные характеристики Цифровой мультиметр, температура от 14° до 122°F. Спектр
1 ответ
Форматирование сообщения об ошибке:
Запрошенное значение не поддерживается для этого свойства. Значение свойства может быть недопустимым, поскольку оно конфликтует с другим свойством.
Свойство: NationalInstruments.DAQmx.CIChannel.FrequencyDivisor
Запрашиваемая стоимость: 1
Возможные значения: от 4 до 4294967295Имя задачи: _unnamedTask<0>
Код статуса: -200077
Согласно документации, вы просите устройство использовать недопустимый делитель. Измени свой 1
к 4
:
frequencyInput.CIChannels.CreateFrequencyChannel(
"Dev1/ctr0",
"Digital Frequency",
200,
15000,
CIFrequencyStartingEdge.Rising,
CIFrequencyMeasurementMethod.DynamicAveraging,
0.001,
/* here */ 4,
CIFrequencyUnits.Hertz
);
NI устанавливает примеры C# для DAQmx и включает в себя один для измерения частоты:
C:\Users\Public\Documents\National Instruments\NI-DAQ\Examples\DotNET4.0\Counter\Measure Digital Frequency\MeasDigFrequency_LowFreq1Ctr\CS