Найти действительные источники запуска на устройстве DAQmx

Используя DAQmx от National Instruments через C ++, я хотел бы представить пользователю список возможных физических триггерных входов, доступных в системе.

Я могу задать задачу для запуска по внешнему триггеру, вызвав что-то вроде

char* trigger_source = "/Dev1/PFI0";
DAQmxCfgDigEdgeStartTrig(taskAO, trigger_source, DAQmx_Val_Rising);

Есть ли способ получить список допустимых значений для trigger_source? я нашел DAQmxGetSystemInfoAttribute(DAQmx_Sys_DevNames, , ) чтобы получить список устройств, доступных в системе, и я знаю, что DAQmxGetDevDILines() и аналогичные функции могут дать мне списки некоторых типов портов на устройстве. Тем не менее, я не нашел ничего, что возвращает PFIs.

Если список не может быть получен, есть ли разумный способ проверить, является ли данная угадывающая строка, как "/Dev%d/PFI%d" является допустимым источником триггера?

0

Решение

Есть два способа:

  1. Динамически по требованию
  2. Угадайте-чек-кэш-запрос

динамический

Вы можете создать этот список, но не одним вызовом в драйвер. Используйте комбинацию этих свойств:

  • DAQmxGetDevTerminals(const char device[], char *data, uInt32 bufferSize)
    который возвращает линии PFI, а также внутренние терминалы. Он не возвращает ни одного из терминалов ввода / вывода (например, ai0).
  • DAQmxGetDevAIPhysicalChans(const char device[], char *data, uInt32 bufferSize)
    который возвращает терминалы канала для подсистемы ИИ; Есть аналогичные вызовы для других подсистем DAQ.
  • DAQmxGetDevAnlgTrigSupported(const char device[], bool32 *data)
    Возвращает информацию о том, поддерживает ли устройство запуск по аналоговым сигналам.
  • DAQmxGetDevDigTrigSupported(const char device[], bool32 *data)
    Возвращает информацию о том, поддерживает ли устройство запуск по цифровым сигналам.
  • DAQmxGetDevAITrigUsage(const char device[], int32 *data)
    который возвращает типы триггеров, которые может использовать подсистема ИИ; Есть аналогичные вызовы для других подсистем DAQ.

Вы также можете создать фиктивную задачу и просмотреть каждую комбинацию терминала и типа триггера.

Вам не нужно будет запускать задачу, просто «подтвердите» ее, что предложит драйверу запустить свою систему правил для этих настроек и вернет ошибку, если эта конфигурация не поддерживается. Если вы кешируете их в памяти или в файле (или в БД, или в любом другом месте), вам может быть проще запросить это вместо драйвера.

  • DAQmxTaskControl (TaskHandle taskHandle, int32 action)
    который перемещает задачу в Модель состояния DAQmx. С помощью DAQmx_Val_Task_Verify для action Параметр проверит, что все параметры задачи действительны для оборудования.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]