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

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

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

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
Сообщения: 79
Зарегистрирован: 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 Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

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
Сообщения: 79
Зарегистрирован: 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 Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 127 раз
Контактная информация:

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
Сообщения: 79
Зарегистрирован: 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
Сообщения: 79
Зарегистрирован: 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 МБ) 58 скачиваний
rsv
advanced
advanced
Сообщения: 170
Зарегистрирован: 18 июл 2019, 13:53
Версия LabVIEW: 2020
Откуда: Россия, Ижевск
Благодарил (а): 33 раза
Контактная информация:

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

Сообщение rsv »

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

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

Сообщение zxc_pavel »

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

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

Сообщение rsv »

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

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

Сообщение rsv »

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

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

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
Сообщения: 263
Зарегистрирован: 19 апр 2017, 23:06
Версия LabVIEW: 2021
Благодарил (а): 13 раз
Поблагодарили: 6 раз

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

Сообщение Juri »

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

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

Сообщение rsv »

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

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

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

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

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

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

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