Найти действительные источники запуска на устройстве 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"
является допустимым источником триггера?
1 ответ
Есть два способа:
- Динамически по требованию
- Угадайте-чек-кэш-запрос
динамический
Вы можете создать этот список, но не одним вызовом в драйвер. Используйте комбинацию этих свойств:
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
Параметр проверит, что все параметры задачи действительны для оборудования.