Советы по программированию на LabVIEW

Простейшие вопросы в области инженерной разработки
Аватара пользователя
dadreamer

Activity Professionalism Tutorials Gold Silver
Bronze Black Автор
professor
professor
Сообщения: 3989
Зарегистрирован: 17 фев 2013, 16:33
Награды: 9
Версия LabVIEW: 2.5 — 2025
Благодарил (а): 13 раз
Поблагодарили: 143 раза

Re: Советы по программированию на LabVIEW

Сообщение dadreamer »

nae писал(а): 04 сен 2022, 18:09Файлы для си выглядят так: inc.7z можно ли по ним понять структуру данных? Это же для Си?
Да, можно подключить эту библиотеку в средах C/C++ и C#. Можно и к :labview: подключить, при желании, ++-специфических штук там не наблюдается. Но судя по всему эта работа уже сделана. Я загуглил, фирма ToupTek предоставляет для своих камер тот же самый SDK: http://www.touptek.com/download/showdow ... g=en&id=33 Качаем файл toupcamsdk.zip, заходим в \extras\labview и там лежит пример на :labview: demo.zip, использующий toupcam.dll и т.н. хэлпер toupcam_labview.dll. При запуске примера :labview: спросит, где находятся эти DLL, надо ему указать на них (учитывая разрядность). Также нужен установленный Vision Development Module. Пример, конечно, не идеален в плане архитектуры, но все CLFN там есть и настроены.
Аватара пользователя
nae
user
user
Сообщения: 80
Зарегистрирован: 20 мар 2014, 14:21
Версия LabVIEW: 15
Откуда: Новосибирск
Благодарил (а): 5 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение nae »

dadreamer писал(а): 04 сен 2022, 20:50
nae писал(а): 04 сен 2022, 18:09Файлы для си выглядят так: inc.7z можно ли по ним понять структуру данных? Это же для Си?
Да, можно подключить эту библиотеку в средах C/C++ и C#. Можно и к :labview: подключить, при желании, ++-специфических штук там не наблюдается. Но судя по всему эта работа уже сделана. Я загуглил, фирма ToupTek предоставляет для своих камер тот же самый SDK: http://www.touptek.com/download/showdow ... g=en&id=33 Качаем файл toupcamsdk.zip, заходим в \extras\labview и там лежит пример на :labview: demo.zip, использующий toupcam.dll и т.н. хэлпер toupcam_labview.dll. При запуске примера :labview: спросит, где находятся эти DLL, надо ему указать на них (учитывая разрядность). Также нужен установленный Vision Development Module. Пример, конечно, не идеален в плане архитектуры, но все CLFN там есть и настроены.
Скачал, указал, пример запускается, и даже заполняет поля справа вроде разрешения камеры верно. Но видеопоток на экране не появляется, попытка сохранить картинку приводит к ошибке - IMAQ драйвер говорит что это не картинка. Камера на этой же машине в toupcamview (софт производителя) работает. NI MAX её не видит, а видит вебкамеру этого ноута и vision assistant тоже видит только вебку. Правильно ли я понимаю, что пока в nI MAX камера не появится, то и приведеные выше примеры не заработают?

доп1) ...
доп2) первая страица с вычиткой параметров камеры точно срабатывает, получает циферки и переходит ко второй, где регистрируется ивент. Но ивенты не возникают. Возможно функция Start не запускает то, что должна запускать...
Аватара пользователя
dadreamer

Activity Professionalism Tutorials Gold Silver
Bronze Black Автор
professor
professor
Сообщения: 3989
Зарегистрирован: 17 фев 2013, 16:33
Награды: 9
Версия LabVIEW: 2.5 — 2025
Благодарил (а): 13 раз
Поблагодарили: 143 раза

Re: Советы по программированию на LabVIEW

Сообщение dadreamer »

Сложно что-то сказать, не имея железа под рукой. Есть вот такие две ссылки:
Are USB UVC Cameras Supported in NI Vision?
Camera Interfaces Supported by NI Software
Там сказано, что IMAQdx сможет получить данные от USB-камеры только в том случае, когда для неё будет установлен драйвер DirectShow от производителя. Вы этот драйвер ставили? Доступен по той ссылке, что я ранее приводил. Также попробуйте и второй драйвер тоже. Всё-таки либо Vision должен заработать, либо dll'ки от разработчика. Ну, и можно ещё написать в ToupTek, если совсем ничего не получится.
Аватара пользователя
nae
user
user
Сообщения: 80
Зарегистрирован: 20 мар 2014, 14:21
Версия LabVIEW: 15
Откуда: Новосибирск
Благодарил (а): 5 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение nae »

dadreamer писал(а): 05 сен 2022, 20:23 Сложно что-то сказать, не имея железа под рукой. Есть вот такие две ссылки:
Are USB UVC Cameras Supported in NI Vision?
Camera Interfaces Supported by NI Software
Там сказано, что IMAQdx сможет получить данные от USB-камеры только в том случае, когда для неё будет установлен драйвер DirectShow от производителя. Вы этот драйвер ставили? Доступен по той ссылке, что я ранее приводил. Также попробуйте и второй драйвер тоже. Всё-таки либо Vision должен заработать, либо dll'ки от разработчика. Ну, и можно ещё написать в ToupTek, если совсем ничего не получится.
Похоже вызовы к toupcam.dll (stdcall) работают, а toupcam_labview.dll (cdecl) - нет. там всего лишь одна функция Start и та не работает :)
У неё прототип void Start(int32_t htoupcam, void *rwer) (cdecl), где htoupcam- хидер (получаемый от toupcam.dll) , а rwer - adopt to type / handles by value куда подключается UE типа U32 - что может пойти не так?
Аватара пользователя
dadreamer

Activity Professionalism Tutorials Gold Silver
Bronze Black Автор
professor
professor
Сообщения: 3989
Зарегистрирован: 17 фев 2013, 16:33
Награды: 9
Версия LabVIEW: 2.5 — 2025
Благодарил (а): 13 раз
Поблагодарили: 143 раза

Re: Советы по программированию на LabVIEW

Сообщение dadreamer »

Боюсь, ничего толкового не посоветую. Можно проанализировать возвращаемые функциями значения на предмет ошибок: https://github.com/NMGRL/toupcam/blob/master/docs.md Вдруг что-то даст. Используется подход "Pull Mode": в toupcam_labview.dll регистрируется коллбэк с помощью DllStartPullModeWithCallback и далее toupcam.dll начинает его вызывать, генерируя эвенты. TOUPCAM_EVENT_IMAGE - это как раз 4-й кадр в кейс структуре примера: видео-данные пришли и можно их "вытягивать" через Toupcam_PullImage. Попробуйте обе dll'ки положить в одну папку и рядом с :vi: . В Event Inspector'е хоть какие-то события появляются или вообще ноль на массу?
Аватара пользователя
nae
user
user
Сообщения: 80
Зарегистрирован: 20 мар 2014, 14:21
Версия LabVIEW: 15
Откуда: Новосибирск
Благодарил (а): 5 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение nae »

dadreamer писал(а): 06 сен 2022, 16:39 Боюсь, ничего толкового не посоветую. Можно проанализировать возвращаемые функциями значения на предмет ошибок: https://github.com/NMGRL/toupcam/blob/master/docs.md Вдруг что-то даст. Используется подход "Pull Mode": в toupcam_labview.dll регистрируется коллбэк с помощью DllStartPullModeWithCallback и далее toupcam.dll начинает его вызывать, генерируя эвенты. TOUPCAM_EVENT_IMAGE - это как раз 4-й кадр в кейс структуре примера: видео-данные пришли и можно их "вытягивать" через Toupcam_PullImage. Попробуйте обе dll'ки положить в одну папку и рядом с :vi: . В Event Inspector'е хоть какие-то события появляются или вообще ноль на массу?
Именно ноль на массу ) В ерроре пусто, ивенты не возникают.
После установки директшоу дров камера появилась в MAXе (можно покрутить и понастраивать там), но в Vision assistant при её выборе возникает "непредсказуемая ошибка" и он отказывается с ней работать (а с вебкой работает).
Сегодня поставщик обещал подключить к переписке с китайцами и они всё подскажут... наверное...

UPD: Общение ограничилось выкладыванием новой версии toupteksdk. Внезапно это помогло примеру на LV, но Vision asistant всё равно послал лесом. Ну и ладно, не очень-то он мне и нужен... Как оказалось для работы с кадрами IMAQ вообще не нужен - можно удалить все его инстансы из примера и работать просто с матрицей U16 (12бит глубины). Также внезапно для меня эта USB3 камера работает без изменения софта и в USB2 режиме пусть и в десять раз медленнее.
Аватара пользователя
nae
user
user
Сообщения: 80
Зарегистрирован: 20 мар 2014, 14:21
Версия LabVIEW: 15
Откуда: Новосибирск
Благодарил (а): 5 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение nae »

Выложу тут на всякий случай (чтобы потом самому найти) код обращения к toupcam.dll для извлечения монохромной 12бит картинки без дополнительных модулей LV.
Отмечу, что моя камера на IMX174 сенсоре (1920x1200x120fps) в режиме 12 бит выдает не более 60фпс. Шумит оно так, что даже в 8бит её нужно четыре раза усреднить, чтобы шум стал +-1бит, по этому целесообразность 12 битного монохрома под вопросом.
Последовательность вызовов toupcam.dll для получения монохромного изображения 12 бит
Последовательность вызовов toupcam.dll для получения монохромного изображения 12 бит
LVDemo1_NoIMAQ.zip
код LV вместе с библиотекой toupcam.dll для работы нужно предварительно установить directshow драйверы к камере.
(3.63 МБ) 171 скачивание
rsv
advanced
advanced
Сообщения: 182
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 34 раза
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Добрый день.
Вопрос по таблице Multicolumn Listbox.
При закрытии таблица запоминает последнюю выбранную строку и при следующем открытии пытается её показать, даже если этой строки нету (при каждом открытии в свойство ItemNames сначала записывается пустой массив, а затем массив с данными). А мне хотелось бы, чтобы при окрытии всегда показывало первые строки в таблице.
Установка свойства FocusRow в 0 решает эту проблему лишь отчасти - фокус переходит на начало таблицы только при нажатии на стрелки.
Вопрос:
Как сделать так, что бы при открытии в таблице всегда строки отображались начиная с нулевой?
Аватара пользователя
zxc_pavel
developer
developer
Сообщения: 253
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 27 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение zxc_pavel »

rsv писал(а): 28 апр 2023, 13:32 А мне хотелось бы, чтобы при окрытии всегда показывало первые строки в таблице.
Property node -> Top left Visible cell -> 0,0
Вложения
111111.png
111111.png (1.81 КБ) 3255 просмотров
rsv
advanced
advanced
Сообщения: 182
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 34 раза
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

zxc_pavel писал(а): 28 апр 2023, 14:10 Property node -> Top left Visible cell -> 0,0
Спасибо, получилось.
rsv
advanced
advanced
Сообщения: 182
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 34 раза
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Доброго времени суток.
Вопрос по обработке событий в Event structure.
Если выбрать несколько контролов, то через свойство CtlRef -> Property Node -> Label.Text можно получить имя контрола, который вызвал событие. А если выбрать <All elements>, то Label.Text возвращает имя кластера.
Вопрос: можно получит имя контрола, который вызвал событие в случае выбора <All elements>?
Artem.spb

Activity Автор
professor
professor
Сообщения: 3624
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 57 раз
Поблагодарили: 195 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Artem.spb »

rsv писал(а): 24 июл 2023, 15:50 Доброго времени суток.
Вопрос по обработке событий в Event structure.
Если выбрать несколько контролов, то через свойство CtlRef -> Property Node -> Label.Text можно получить имя контрола, который вызвал событие. А если выбрать <All elements>, то Label.Text возвращает имя кластера.
Вопрос: можно получит имя контрола, который вызвал событие в случае выбора <All elements>?
1) не делать <All elements>, а сделать отдельные события
2) сравнить new val и old val
vc.png
Аватара пользователя
Juri
I/O
I/O
Сообщения: 276
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 17 раз
Поблагодарили: 6 раз

Re: Советы по программированию на LabVIEW

Сообщение Juri »

Кто как решает проблему с тем, что не существует "Splitter bar" для таб контролла и нет свойства "Fit control to tab" помимо "Fit control to pane"?
Я попробовал в ручную регулировать размеры контроллов, но работает так себе. Если резко дергать размеры окна, то все ломается.
Возможно как-то можно заставить изменять размеры контролла не налету, а только после того как отжата мышка от края экрана, но как так сделать?
Вложения
AutoResize.llb
(73.18 КБ) 110 скачиваний
rsv
advanced
advanced
Сообщения: 182
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 34 раза
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение rsv »

Artem.spb писал(а): 24 июл 2023, 16:05 2) сравнить new val и old val
Интересное решение, спасибо.
Artem.spb

Activity Автор
professor
professor
Сообщения: 3624
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 57 раз
Поблагодарили: 195 раз
Контактная информация:

Re: Советы по программированию на LabVIEW

Сообщение Artem.spb »

Juri писал(а): 25 июл 2023, 15:07 Кто как решает проблему с тем, что не существует "Splitter bar" для таб контролла и нет свойства "Fit control to tab" помимо "Fit control to pane"?
Я попробовал в ручную регулировать размеры контроллов, но работает так себе. Если резко дергать размеры окна, то все ломается.
Возможно как-то можно заставить изменять размеры контролла не налету, а только после того как отжата мышка от края экрана, но как так сделать?
Не у всех есть 21

Подобные проблемы я решаю через subpanel, а все изыски уже нормально на FP втраиваемого :vi:
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»