Чтение частоты CI в C# с NI USB-6363

Рабочий код LabVIEW

Прикрепленный выше код 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

Другие вопросы по тегам