Конкурс на лучшее дополнение к LabVIEW
-
Pavel Krivozubov
- professor
- Сообщения: 4421
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
А, так это ошибки Error out! Я почему-то думал, что это ошибки типа Broken Wires etc.
Всё ок, файл сгенерировался, запись о ошибке появилась.
Возможно это и удобное средство, хотя я честно говоря я подобные ошибки отлавливаю на этапе отладки по шагам и либо устраняю, либо глушу их, ставя на выход кластера ошибки индикатор и размещая его в невидимой пользователю области FP (как например с тем самым Operation canceled by user).
Но я это я и у других могут быть другие модели программирования..
В общем спасибо за работу, наверняка она пригодится!
Всё ок, файл сгенерировался, запись о ошибке появилась.
Возможно это и удобное средство, хотя я честно говоря я подобные ошибки отлавливаю на этапе отладки по шагам и либо устраняю, либо глушу их, ставя на выход кластера ошибки индикатор и размещая его в невидимой пользователю области FP (как например с тем самым Operation canceled by user).
Но я это я и у других могут быть другие модели программирования..
В общем спасибо за работу, наверняка она пригодится!
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
Alex89
- adviser
- Сообщения: 202
- Зарегистрирован: 04 апр 2010, 18:20
- Награды: 1
- Версия LabVIEW: 2009 SP1
- Откуда: Санкт-Петербург
Re: Конкурс на лучшее дополнение к LabVIEW
Это можно использовать для отладки приложения, после использования его конечным пользователем... Сам пользователь не должен получать диалоговые окна ошибок, которые генерирует и пытаться их исправить. Он только увидит индикатор ошибок. А уже разработчик, используя лог-файл, будет там ковыряться... Но, опять же, я это все делал для себя... Правда интересно, как это будет работать с .exe файлом. Вообщем, еще есть над чем работать..Indey писал(а):А, так это ошибки Error out! Я почему-то думал, что это ошибки типа Broken Wires etc.
Всё ок, файл сгенерировался, запись о ошибке появилась.
Возможно это и удобное средство, хотя я честно говоря я подобные ошибки отлавливаю на этапе отладки по шагам и либо устраняю, либо глушу их, ставя на выход кластера ошибки индикатор и размещая его в невидимой пользователю области FP (как например с тем самым Operation canceled by user).
Но я это я и у других могут быть другие модели программирования..
В общем спасибо за работу, наверняка она пригодится!
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Конкурс на лучшее дополнение к LabVIEW
а если у меня несколько параллельных циклов, и в каждый я добавлю эту subvi, они же с одним файлом работать будут? не будут конфликтовать?
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
-
Alex89
- adviser
- Сообщения: 202
- Зарегистрирован: 04 апр 2010, 18:20
- Награды: 1
- Версия LabVIEW: 2009 SP1
- Откуда: Санкт-Петербург
Re: Конкурс на лучшее дополнение к LabVIEW
Нет, не должны конфликтовать... Этот sub можно использовать несколько раз. Но если заметите ошибки, то напишите мне обязательно.FireFly писал(а):а если у меня несколько параллельных циклов, и в каждый я добавлю эту subvi, они же с одним файлом работать будут? не будут конфликтовать?
Главное к каждому экземпляру присоединить Current VI' Path constant.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Пожелания и комментарии выкладывать лучше здесь, или личкой?
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Pavel Krivozubov
- professor
- Сообщения: 4421
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Можно и здесь.
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Alex89, Все мы занимаемся отладкой больших и малых проектов, штучка получилась простая и полезная. Мне такое нравится.
Есть пару мелких, легко реализуемых доработок, которые сделют её ещё более востребованной:
1. Неудобно то, что каждый раз нужно заводить путь текущего . Много лишних кликов для механического действия. Как это обойти? Решать тебе, я бы либо сделал shell.vi (http://zone.ni.com/devzone/cda/tut/p/id/6523), либо воспользовался бы функцией call chain внутри твоего .
2. Когда твой используется для отладки в нескольких параллельных потоках, то если вызван из одного потока, другой поток будет приостановлен, как только он захочет вызвать твой . Если этот поток, например, занимается обработкой данных в soft realtime то может получиться так, что отладка внесёт изменения в работу программы. Что делать? Во-первых, должен быть reenterable. Во-вторых, время выполнения должно быть сведено к минимуму + как в этом случае обойти race condition при записи в файл? Я бы свосем упростил начинку вставляемого для отладки. Например, заменив весь код на операцию добавления ошибки в очередь. Быстро и не вызывает переключения на систем выполнения. Теперь, кто эту очередь обрабатывает? Самое простое - бросить на диаграмму отлаживаемого VI одну VI - поток отладчика. Который уже с низким приоритетом считывает сообщения из очереди и их обрабатывает по твоей схеме. Можно сделать и сложнее/элегантнее, но тут я согласен с Indey, что всё зависит от модели программирования.
Есть пару мелких, легко реализуемых доработок, которые сделют её ещё более востребованной:
1. Неудобно то, что каждый раз нужно заводить путь текущего . Много лишних кликов для механического действия. Как это обойти? Решать тебе, я бы либо сделал shell.vi (http://zone.ni.com/devzone/cda/tut/p/id/6523), либо воспользовался бы функцией call chain внутри твоего .
2. Когда твой используется для отладки в нескольких параллельных потоках, то если вызван из одного потока, другой поток будет приостановлен, как только он захочет вызвать твой . Если этот поток, например, занимается обработкой данных в soft realtime то может получиться так, что отладка внесёт изменения в работу программы. Что делать? Во-первых, должен быть reenterable. Во-вторых, время выполнения должно быть сведено к минимуму + как в этом случае обойти race condition при записи в файл? Я бы свосем упростил начинку вставляемого для отладки. Например, заменив весь код на операцию добавления ошибки в очередь. Быстро и не вызывает переключения на систем выполнения. Теперь, кто эту очередь обрабатывает? Самое простое - бросить на диаграмму отлаживаемого VI одну VI - поток отладчика. Который уже с низким приоритетом считывает сообщения из очереди и их обрабатывает по твоей схеме. Можно сделать и сложнее/элегантнее, но тут я согласен с Indey, что всё зависит от модели программирования.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
Alex89
- adviser
- Сообщения: 202
- Зарегистрирован: 04 апр 2010, 18:20
- Награды: 1
- Версия LabVIEW: 2009 SP1
- Откуда: Санкт-Петербург
Re: Конкурс на лучшее дополнение к LabVIEW
mzu2006, спасибо большое за подробные советы! Единственная проблема в том, что я не очень продвинутый пользователь и из вашего сообщения я пока не очень понимаю смысла многих фраз и терминологии (" должен быть reenterable" , "race condition" , "бросить на диаграмму отлаживаемого VI одну VI - поток отладчика" и т.д. ). Но в любом случае, я в скором времени разберусь с этими вещами и воспользуюсь вашими советами.
Вот это точно! Правда путь это не всегда путь к , если используется .exe версия, то путь должен быть к .exe файлу. Поэтому я и сделал, чтобы путь можно было задавать вручную + мало ли кто-то захочет хранить лог-файлы в особом месте.1. Неудобно то, что каждый раз нужно заводить путь текущего
-
Alex89
- adviser
- Сообщения: 202
- Зарегистрирован: 04 апр 2010, 18:20
- Награды: 1
- Версия LabVIEW: 2009 SP1
- Откуда: Санкт-Петербург
Re: Конкурс на лучшее дополнение к LabVIEW
Я недавно где-то читал про функцию "Выполнение с повторным вхождением" (русскоязычный источник). "При этом каждому из узлов ВПП выделяется независимая область памяти для хранения данных, как если бы они являлись двумя абсолютно разными ВПП. Каждый экземпляр ВПП с повторным вхождением может быть открыт независимо."2. Когда твой используется для отладки в нескольких параллельных потоках, то если вызван из одного потока, другой поток будет приостановлен, как только он захочет вызвать твой .
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Да, это оно и есть. Во избежании разночтений, я использую английский термин, так как английский один из официальных языков . Только теперь надо сериализовать доступ к файлу, например так как я написал выше.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
FireFly
- expert
- Сообщения: 1321
- Зарегистрирован: 25 апр 2009, 08:58
- Награды: 2
- Версия LabVIEW: 2014
- Откуда: Санкт-Петербург
- Поблагодарили: 1 раз
Re: Конкурс на лучшее дополнение к LabVIEW
Да именно про это я и спрашивал в своём сообщении. Тут действительно нужно что-то доработать.mzu2006 писал(а):2. Когда твой используется для отладки в нескольких параллельных потоках, то если вызван из одного потока, другой поток будет приостановлен, как только он захочет вызвать твой ...
А вообще идея хоть и простенькая, но очень полезная. Так что дерзай - улучшай, дорабатывай. Удачи.
Иногда лучше молчать и слыть идиотом, чем заговорить и развеять все сомнения.
Re: Конкурс на лучшее дополнение к LabVIEW
Вот тебе для изучения, я когда-то стащил с форума конкурентов.Alex89 писал(а):Я недавно где-то читал про функцию "Выполнение с повторным вхождением" (русскоязычный источник). "При этом каждому из узлов ВПП выделяется независимая область памяти для хранения данных, как если бы они являлись двумя абсолютно разными ВПП. Каждый экземпляр ВПП с повторным вхождением может быть открыт независимо."2. Когда твой используется для отладки в нескольких параллельных потоках, то если вызван из одного потока, другой поток будет приостановлен, как только он захочет вызвать твой .
- Вложения
-
- logger.rar
- (180.99 КБ) 219 скачиваний
-
Alex89
- adviser
- Сообщения: 202
- Зарегистрирован: 04 апр 2010, 18:20
- Награды: 1
- Версия LabVIEW: 2009 SP1
- Откуда: Санкт-Петербург
Re: Конкурс на лучшее дополнение к LabVIEW
Шаблон с собственной обработкой ошибок (внесены изменения).
Использование:
1. Запускаем
2. File > New... > VI > From Template > User > Browse... > ищем файл шаблона (New 1280x1024.vit)
3. Далее Появляется FP и BD нового .
4. Что бы использовать обработку ошибок, необходимо сначала сохранить VI на диск, иначе, при запуске вы получите соответствующее уведомление.
5. Для демонстрации: создать функцию Open/Create/Replace File и подать кластер ошибки на вход Merge errors. При запуске появится диалог > нажать отмена > это вызовет типичную ошибку в , прозвучит звуковой сигнал и загорится соответствующий индикатор. Для просмотра лог-файла, нажать кнопку show log file. Создавать ошибки можно сколько угодно раз, они будут добавлены в лог-файл с соответствующей датой и временем. По умолчанию лог-файл хранится в директории соответствующего .
Изменения:
1. У subVI установлена функция Reentrant execution. Каждый экземпляр subVI может быть открыт и запущен независимо.
2. При добавлении subVI (Error log) на BD, не надо добавлять путь к VI, лог-файл (по умолчанию) будет хранится в директории соответствующего .
Однако вход Path оставлен, и, при необходимости, пользователь может указать директорию самостоятельно.
Использование:
1. Запускаем
2. File > New... > VI > From Template > User > Browse... > ищем файл шаблона (New 1280x1024.vit)
3. Далее Появляется FP и BD нового .
4. Что бы использовать обработку ошибок, необходимо сначала сохранить VI на диск, иначе, при запуске вы получите соответствующее уведомление.
5. Для демонстрации: создать функцию Open/Create/Replace File и подать кластер ошибки на вход Merge errors. При запуске появится диалог > нажать отмена > это вызовет типичную ошибку в , прозвучит звуковой сигнал и загорится соответствующий индикатор. Для просмотра лог-файла, нажать кнопку show log file. Создавать ошибки можно сколько угодно раз, они будут добавлены в лог-файл с соответствующей датой и временем. По умолчанию лог-файл хранится в директории соответствующего .
Изменения:
1. У subVI установлена функция Reentrant execution. Каждый экземпляр subVI может быть открыт и запущен независимо.
2. При добавлении subVI (Error log) на BD, не надо добавлять путь к VI, лог-файл (по умолчанию) будет хранится в директории соответствующего .
Однако вход Path оставлен, и, при необходимости, пользователь может указать директорию самостоятельно.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
Да, как-то так. В принципе, в таком варианте,нужна сериализация доступа к файлу. Ещё можно поработать с уменьшением времени выполнения sub .
Последний раз редактировалось mzu2006 21 июл 2010, 17:11, всего редактировалось 1 раз.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Конкурс на лучшее дополнение к LabVIEW
В первой версии нет, так как sub не реентерабльна.FireFly писал(а):а если у меня несколько параллельных циклов, и в каждый я добавлю эту subvi, они же с одним файлом работать будут? не будут конфликтовать?
Во второй версии - сериализовать надо к файлу доступ. Посмотрите на поведение этой проги:
- Вложения
-
- LogDemo.vi
- (9.43 КБ) 233 скачивания
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 3 Ответы
- 2068 Просмотры
-
Последнее сообщение PozhiloyGoblin
-
- 0 Ответы
- 344 Просмотры
-
Последнее сообщение maxim_MA
-
- 23 Ответы
- 2424 Просмотры
-
Последнее сообщение dadreamer
-
- 2 Ответы
- 391 Просмотры
-
Последнее сообщение ujin1
-
- 5 Ответы
- 847 Просмотры
-
Последнее сообщение dadreamer