Конкурс на лучшее дополнение к LabVIEW
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Да, конечно возможно.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Вы слышали о том, что на сайте NI можно размещать свои тулкиты и addons для LabVIEW и продавать?
Вот тут можете про это почитать - http://www.ni.com/labviewtools/.
Вот тут можете про это почитать - http://www.ni.com/labviewtools/.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Напоминаю, осталось меньше недели до завершения конкурса!
Явные лидеры уже определились, но у вас еще есть возможность повлиять на исход голосования!
Голосуем здесь:
Голосование в категории "Полезность".
Голосование в категории "Сложность".
Явные лидеры уже определились, но у вас еще есть возможность повлиять на исход голосования!
Голосуем здесь:
Голосование в категории "Полезность".
Голосование в категории "Сложность".
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
И так, завершилось голосование в конкурсе на лучшее дополнение LabVIEW - 2010.
Андрей Дмитриев со своим замечательным AD Vision Toolkit !!!
Его работа признана большинством пользователей LabVIEW одновременно и самой сложной и самой полезной. И это неудивительно, ведь обработка изображений - одна из основных специализаций применения LabVIEW на данный момент и поэтому очень много пользователей работает в этой области.
Мои поздравления победителю и огромное спасибо! Твоя работа станет украшением нашего портала и следующей научно практической конференции NI 2010.
Остальные призовые места распределились следующим образом:
2 место в категории "Полезность" занял Евгений Граф и его библиотека "Tasking 2 Library".
3 место в категории "Полезность" занял Руслан Гимазетдинов и его "TrayIcon Librirary Toolkit".
Мои поздравления победителям!
Остальным участникам большое спасибо за участие! Все работы, номинированные на конкурс будут записаны на диск Best LabVIEW Addon 2010, который будет распространяться на конференции. Так же все работы будут добавлены для скачивания в существующую библиотеку кода, которая есть на нашем сайте.
В общем конкурс я считаю удавшимся, и огромное спасибо Руслану за идею его проведения!
Осталось выяснить только один вопрос. В категории сложность несомненно самой сложной работой был признан тулкит Андрея. Но при этом второе и третье места остались вакантны. Поэтому объявляется:
Голосование за 2 и 3 места в категории"Сложность".
Там присутствуют все работы в порядке следования, с сохранённой нумерацией, за исключением работы Андрея Дмитриева, которая и так стала абсолютным лидером.
Поэтому просьба голосовать. Опрос будет длится неделю. Поехали!
Абсолютным победителем в обоих номинациях стал Его работа признана большинством пользователей LabVIEW одновременно и самой сложной и самой полезной. И это неудивительно, ведь обработка изображений - одна из основных специализаций применения LabVIEW на данный момент и поэтому очень много пользователей работает в этой области.
Мои поздравления победителю и огромное спасибо! Твоя работа станет украшением нашего портала и следующей научно практической конференции NI 2010.
Остальные призовые места распределились следующим образом:
2 место в категории "Полезность" занял Евгений Граф и его библиотека "Tasking 2 Library".
3 место в категории "Полезность" занял Руслан Гимазетдинов и его "TrayIcon Librirary Toolkit".
Мои поздравления победителям!
Остальным участникам большое спасибо за участие! Все работы, номинированные на конкурс будут записаны на диск Best LabVIEW Addon 2010, который будет распространяться на конференции. Так же все работы будут добавлены для скачивания в существующую библиотеку кода, которая есть на нашем сайте.
В общем конкурс я считаю удавшимся, и огромное спасибо Руслану за идею его проведения!
Осталось выяснить только один вопрос. В категории сложность несомненно самой сложной работой был признан тулкит Андрея. Но при этом второе и третье места остались вакантны. Поэтому объявляется:
Голосование за 2 и 3 места в категории"Сложность".
Там присутствуют все работы в порядке следования, с сохранённой нумерацией, за исключением работы Андрея Дмитриева, которая и так стала абсолютным лидером.
Поэтому просьба голосовать. Опрос будет длится неделю. Поехали!
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Спасибо, коллеги, я даже не ожидал.
Хочу несколько слов добавить. Что касается сложности, то в общем-то основная сложность там заложена вовсе и не в LabVIEW, а в динамических библиотеках (там порядка десяти тысяч строк С кода). То есть по сути это просто большая Wrapper библиотека (причём частично автогенерированная при помощи скриптинга). Удовольствие доставила работа с NVPP библиотекой - по правилам все CUDA функции должны выполняться в одном потоке, и для того, чтобы не вызывать DLL в UI потоке пришлось воспользоваться NI Compute библиотекой. Также позднее были сделаны мостики к библиотекам OpenCV, EZTwain, FreeImage и бесплатным функциям, имеющимся в IMAQ Vision. Также есть наработки в направлении libraw, но это ещё из неопубликованного. Основная идея была - прозрачно совместить несколько свободно-распространяемых библиотек, взяв из каждой самое вкусное и полезное. Что касается полезности, то при практическом использовании скорее всего вы натолкнётесь на кучу ограничений - например библиотекой NVPP поддерживаются далеко не все типы изображений, из OpenCV перенесёна лишь малая часть функций, и т.д. Практически я воспользовался своей библиотекой дважды - при генерации видеофайлов (OpenCV AVI функции работают значительно лучше чем NI) и поддержкой USB камер (простенькая система видеонаблюдения). То есть это также альтернатива платному IMAQdx (платить четыре сотни долларов за захват картинки с Веб камеры - это как-то слишком). Я скорее всего буду время от времени возвращаться к этому проекту и добавлять туда кое-какие функции (для меня это своеобразный "плацдарм" для всяких наработок). Также со мной уже связался один из разработчиков OpenCV. Вот сейчас неспешно занимаюсь переносом в LabVIEW 2010 - там немного другой инсталлятор с парой совершенно кошмарных багов - требует изрядных плясок с бубном.
Что касается возможности размещения тулкитов на сайте NI - то это возможно (я общался с инженером NI - тулкит им понравился и его почти приняли), но для этого тулкит должен отвечать определённым требованиям. Я почти удовлетворяю (есть полноценный инсталлятор, всё достаточно аккуратно сделано). Но в числе требований есть также документация, а у меня далеко не все VI и контролы снабжены описаниями. Возможно я и доделаю это долгими зимними вечерами, тогда он появится на сайте NI.
Тулкиты также можно и продавать, как отмечалось выше, но коммерческая выгода мероприятия представляется мне весьма и весьма сомнительной (тем более что есть по меньшей мере два конкурента). Плюс для продажи там более жёсткие требования, ну и коммерческий тулкит налагает определённую ответственность по тех поддержке купивших пользователей - не думаю, что у меня есть достаточно времени для этого. Впрочем, кто знает...
Из числа других тулкитов, участвующих в конкурсе Tasking 2 Library и TrayIcon Librirary Toolkit мне понравились больше всего. Первый очень похож на то, что я сделал несколько лет назад в рамках большого коммерческого проекта. Единственный небольшой недостаток - в Tasking 2 Library модули связаны друг с другом typedef контролом, в котором перечислены все потоки. То есть добавление ещё одного потока приведёт к необходимости перекомпиляции всего приложения. Если Евгений сделает так, чтобы потоки стали абсолютно независимыми (с целью возможности компиляции каждого процесса в отдельную библиотеку - плагин), то инструмент станет просто бесценный - особенно с точки зрения расширяемости готового продукта. А TrayIcon Librirary Toolkit напомнил мне то, что я делал лет десять назад на LabVIEW 5.1, да так и не доделал (а в то время это был ад кромешный с ShellNotifyIcon и обменом сообщениями из всплывающего меню в приложение). Сейчас с современными средствами это стало чуть проще и приятно видеть более-менее законченный продукт.
В общем конкурс я тоже считаю вполне удавшимся.
PS.
Ну а если быть совсем честным, то меня просто задолбало пить кофе на работе из одноразовых стаканчиков и я всё время забываю купить уже какую-нибудь кружку. Так что когда я увидел что кружка полагается за каждое призовое место, то решил участвовать не раздумывая :))
Хочу несколько слов добавить. Что касается сложности, то в общем-то основная сложность там заложена вовсе и не в LabVIEW, а в динамических библиотеках (там порядка десяти тысяч строк С кода). То есть по сути это просто большая Wrapper библиотека (причём частично автогенерированная при помощи скриптинга). Удовольствие доставила работа с NVPP библиотекой - по правилам все CUDA функции должны выполняться в одном потоке, и для того, чтобы не вызывать DLL в UI потоке пришлось воспользоваться NI Compute библиотекой. Также позднее были сделаны мостики к библиотекам OpenCV, EZTwain, FreeImage и бесплатным функциям, имеющимся в IMAQ Vision. Также есть наработки в направлении libraw, но это ещё из неопубликованного. Основная идея была - прозрачно совместить несколько свободно-распространяемых библиотек, взяв из каждой самое вкусное и полезное. Что касается полезности, то при практическом использовании скорее всего вы натолкнётесь на кучу ограничений - например библиотекой NVPP поддерживаются далеко не все типы изображений, из OpenCV перенесёна лишь малая часть функций, и т.д. Практически я воспользовался своей библиотекой дважды - при генерации видеофайлов (OpenCV AVI функции работают значительно лучше чем NI) и поддержкой USB камер (простенькая система видеонаблюдения). То есть это также альтернатива платному IMAQdx (платить четыре сотни долларов за захват картинки с Веб камеры - это как-то слишком). Я скорее всего буду время от времени возвращаться к этому проекту и добавлять туда кое-какие функции (для меня это своеобразный "плацдарм" для всяких наработок). Также со мной уже связался один из разработчиков OpenCV. Вот сейчас неспешно занимаюсь переносом в LabVIEW 2010 - там немного другой инсталлятор с парой совершенно кошмарных багов - требует изрядных плясок с бубном.
Что касается возможности размещения тулкитов на сайте NI - то это возможно (я общался с инженером NI - тулкит им понравился и его почти приняли), но для этого тулкит должен отвечать определённым требованиям. Я почти удовлетворяю (есть полноценный инсталлятор, всё достаточно аккуратно сделано). Но в числе требований есть также документация, а у меня далеко не все VI и контролы снабжены описаниями. Возможно я и доделаю это долгими зимними вечерами, тогда он появится на сайте NI.
Тулкиты также можно и продавать, как отмечалось выше, но коммерческая выгода мероприятия представляется мне весьма и весьма сомнительной (тем более что есть по меньшей мере два конкурента). Плюс для продажи там более жёсткие требования, ну и коммерческий тулкит налагает определённую ответственность по тех поддержке купивших пользователей - не думаю, что у меня есть достаточно времени для этого. Впрочем, кто знает...
Из числа других тулкитов, участвующих в конкурсе Tasking 2 Library и TrayIcon Librirary Toolkit мне понравились больше всего. Первый очень похож на то, что я сделал несколько лет назад в рамках большого коммерческого проекта. Единственный небольшой недостаток - в Tasking 2 Library модули связаны друг с другом typedef контролом, в котором перечислены все потоки. То есть добавление ещё одного потока приведёт к необходимости перекомпиляции всего приложения. Если Евгений сделает так, чтобы потоки стали абсолютно независимыми (с целью возможности компиляции каждого процесса в отдельную библиотеку - плагин), то инструмент станет просто бесценный - особенно с точки зрения расширяемости готового продукта. А TrayIcon Librirary Toolkit напомнил мне то, что я делал лет десять назад на LabVIEW 5.1, да так и не доделал (а в то время это был ад кромешный с ShellNotifyIcon и обменом сообщениями из всплывающего меню в приложение). Сейчас с современными средствами это стало чуть проще и приятно видеть более-менее законченный продукт.
В общем конкурс я тоже считаю вполне удавшимся.
PS.
Ну а если быть совсем честным, то меня просто задолбало пить кофе на работе из одноразовых стаканчиков и я всё время забываю купить уже какую-нибудь кружку. Так что когда я увидел что кружка полагается за каждое призовое место, то решил участвовать не раздумывая :))
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Спасибо, и поздравляю с победой в конкурсе!AndreyDmitriev писал(а):Единственный небольшой недостаток - в Tasking 2 Library модули связаны друг с другом typedef контролом, в котором перечислены все потоки. То есть добавление ещё одного потока приведёт к необходимости перекомпиляции всего приложения. Если Евгений сделает так, чтобы потоки стали абсолютно независимыми (с целью возможности компиляции каждого процесса в отдельную библиотеку - плагин), то инструмент станет просто бесценный - особенно с точки зрения расширяемости готового продукта.
На счёт вышесказанного есть какое нибудь предложение? Ну хоть какой нибудь намёк на решение этой проблемы? Единственное, что я вижу, это заменить Enum Typedef на просто номера (да, кстати в библиотеке используются обычные номера, а еньюмераторы вне библиотеки) или строки, но тогда мне кажется будет не так удобно пользоваться этой библиотекой. Тоже самое касается нумерации команд для каждого потока.
С нас кружка
-
- VIP
- Сообщения: 1338
- Зарегистрирован: 03 фев 2010, 00:42
- Награды: 6
- Версия LabVIEW: 6.1 - 2024
- Откуда: Германия
- Благодарил (а): 1 раз
- Поблагодарили: 44 раза
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Важно ещё вызывать SubVI потоков динамически через Reference, а не класть их на блок - диаграмму. Понятно, что если в одном потоке Enum Typedef будет иметь три состояния, а вдругом тот же самый typedef будет иметь четыре состояния, то возникнет конфликт. Замена enum на чистые строки в общем-то уже частично решит проблему.eg писал(а): На счёт вышесказанного есть какое нибудь предложение? Ну хоть какой нибудь намёк на решение этой проблемы?
Я сделал вот как: Каждый поток компилируется в llb. Есть небольшое ядро, которое при старте смотрит какие модули инсталлированы (в простейшем случае просто получает список файлов из директории) и динамически запускает основной Top-Level SubVI из каждой llb (его имя совпадает с именем llb). В режиме разработки список модулей ядро получает из проекта, а каждый модуль организован в lvlib. Все SubVI внутри каждого потока помечены как приватные за исключением точки входа - это избавляет от ошибок кросслинковки. Внутри каждого потока есть while цикл, а внутри цикла - case, имеющий состояния Init, Register Inputs, Register Outputs, Run. Терминал Case выведен наружу. Сначала для каждого модуля выполняется Init, где происходит инициализация модуля (резервируется память, читаются установки и т.д.). При этом VI потока завершает работу, но данные хранятся в Shift регистре - то есть каждый поток по совместительству Functional Global. Затем выполняется прогон всех модулей с кейсом Register Input. На этом этапе каждый поток сообщает ядру о своих "входах" (каждый вход по сути именованная очередь вариантов). Имя входа задаётся строкой. Мне это не мешает, некоторые программисты в нашей команде делают это через Typedef, получая имя из Label - в принципе оба метода жизнеспособны. Затем выполняется прогон с кейсом Register Outputs и на этом этапе каждый поток подключает свои выходы ко входам, зарегистрированным на предыдущем этапе. Ну а дальше запускается case Run и каждый поток резидентно выполняется в памяти (поскольку при этом VI не завершает работу, то для запуска для каждого потока создаётся небольшой Daemon, основанный на реентерабельном темплейте). Вот и всё, теперь любой поток может записать данный в свой выход (читай - очередь), а другой поток тут же получит данные на своём входе (он должен ждать данных из входной очереди, разумеется).
Ну ещё из функциональности - точно также регистрируются семафоры (может иногда потребоваться между потоками), глобальные статические переменные и т.д. Функциональность ядра постепенно наращивается, например сейчас ядро также отвечает за локализацию - при инициализации каждый поток сообщает ядру о VI с передними панелями, требующими локализации. При получении внешнего сигнала ядро по референсам получает список всех контролов, читает текстовые данные для перевода и меняет Captions у каждого контрола. Важно то, что ядро на этапе разработки понятия не имеет о имеющихся модулях, равно как один модуль понятия не имеет о другом модуле - они независимы и никак не связаны и связываются друг с другом лишь при запуске приложения (или проекта). Конечно это добавляет определённую долю монструозности, но делает возможным распределённую разработку (у нас несколько человек работают над проектами параллельно и не мешая друг другу), кроме того даёт возможность собрать готовое приложение как из кубиков, без перекомпиляции и даёт возможность сделать что-то особенное для конкретного заказчика, не разбивая при этом проект и оставляя его постоянно работоспособным. Масштабы проекта примерно такие - ядро содержит примерно 300 SubVI, количество модулей - больше 200 (суммарно примерно 2500 SubVI). В типичном приложении используется 30-50 модулей. Где-то так.
-
Pavel Krivozubov
- professor
- Сообщения: 4422
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
И так, голосование за серебро и бронзу в категории "Сложность" завершилось!
По его итогам второе место заняла работа Tasking 2 Library (автор eg).
Третье место заняла работа MDI в LabVIEW (автор Crowbar).
Поздравляю победителей!
И еще раз спасибо всем участникам и разумеется тем, кто голосовал!
Конкурс объявляется закрытым!
До новых встреч!
По его итогам второе место заняла работа Tasking 2 Library (автор eg).
Третье место заняла работа MDI в LabVIEW (автор Crowbar).
Поздравляю победителей!
И еще раз спасибо всем участникам и разумеется тем, кто голосовал!
Конкурс объявляется закрытым!
До новых встреч!
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Конкурс на лучшее дополнение к LabVIEW
Здесь: http://labviewportal.org/viewtopic.php?f=142&t=2078rushonda писал(а):Здравствуйте. А где можно посмотреть Tasking 2 Library
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2074 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 344 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2433 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 848 Просмотры
-
Последнее сообщение dadreamer