CVI. Заморозка GUI потока при навигации по меню
-
Chupakabra
- professional
- Сообщения: 360
- Зарегистрирован: 21 янв 2009, 10:50
- Награды: 1
- Версия LabVIEW: 2015
- Откуда: Москва
- Поблагодарили: 4 раза
- Контактная информация:
CVI. Заморозка GUI потока при навигации по меню
Пробую начать работать с LabWindows/CVI. Cтолкнулся с такой особенность. При навигации по меню или перетаскивания окна во время выполнения приложения с выводом на GUI происходит остановка вывода. Когда отпускаю мышкой окно, вывод продолжается. Как победить?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Проблема понятна. Может быть обработчик событий лицевой панели и вывод данных на лицевую панель находятся в одном потоке?
-
Chupakabra
- professional
- Сообщения: 360
- Зарегистрирован: 21 янв 2009, 10:50
- Награды: 1
- Версия LabVIEW: 2015
- Откуда: Москва
- Поблагодарили: 4 раза
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Да, так и есть. Приложие (из базы примеров) однопоточное. Но работа таймера блокируется совсем (при нажатии и удержании мышкой на title bar).eg писал(а):Проблема понятна. Может быть обработчик событий лицевой панели и вывод данных на лицевую панель находятся в одном потоке?
Решение нашлось:
Yes, this is normal behaviour: holding mouse button while n a top level window blocks timer scheduling (this is called "event-blocking condition"). There are a couple of user events that can cause this to happen and as far as I know the only solution is to use an asyncronous timer (<cvidir>\toolslib\toolbox\asynctmr.fp) instead of a regular timer. More informations about event-blocking conditions can be found in the online help for ATTR_ALLOW_UNSAFE_TIMER_EVENTS in SetSystemAttribute function.
Using an async timer is quite easy: its callback has the same format as standard UI timers callback, with the only difference that the first parameter is not the panel handle (since the timer is executed in a separate thread outside the UI one): in case you are using panelhandle received as a parameter you will need to use a different method to get this value (for example callbackData parameter of the function). Also, considering it executes in a different thread, standard multithreading cautions must be taken while handling variables that are used also in different threads in the program.
http://forums.ni.com/ni/board/message?b ... .id=347229
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Сорри за оффтоп. Но чисто из интереса с чем связан переход на LW?Chupakabra писал(а):Пробую начать работать с LabWindows/CVI.
Я ставил себе LW и "ковырялся" в нем одно время, правда больших (да и маленьких) проектов не делал, так что достойного опыта нет... Из того что я увидел, приемуществ у LW перед LV нет вообще. Тоже надо инсталить рантайм, каких-то доп. возможнотей нет, а само "кодирование" (с т.з. скорости, удобства, дебага...) все-таки посложнее будет.
В итоге оч. удобно для закореленелых сишников, чтобы была возможность без затрат времени на внедрние в хитросплетения проводов LV сразу творить чудеса. + мировой стандарт ANSI/C, в котором лучше или хуже, но разбирается каждый программер на любой фирме. Хотя в таком случае не удобнее ли взять .NET + Measurment Studio?
С точки зрения популярности и количества предлагаемых вакансий LV имеет приемущество перед LW (опять же ИМХО)... Тут пожалуй все определяется тем, на какую платформу подсела фирма N лет назад и сейчас уже менять ее не хочет.
Может кто-то просвятит, есть ли какие либо приемущества/недостатки у LW к LV? В каких областях и почему одну платформу предпочитают другой?
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Forward, Я тоже твоего мнения. Я бы лучше взял , ну или на крайняк Measurement Studio. Но на вкус и цвет...
-
Chupakabra
- professional
- Сообщения: 360
- Зарегистрирован: 21 янв 2009, 10:50
- Награды: 1
- Версия LabVIEW: 2015
- Откуда: Москва
- Поблагодарили: 4 раза
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Да я вот тоже хочу поковыряться. Собственно, задача у меня найти альтернативу дорогостоящей SCADA-системе (для каждого проекта покупается run-time на необходимое число точек ввода-вывода) для небольших несложных проектов, в основном, мониторинг (измерения). Т.е. раз купить среду без последующей оплаты рантаймов. Почему решил остановить на LW? Подходит под задачу "на ура", субъективно быстрее работает, чем LV. Есть встроенная поддержка OPC (правда, отсутствует необходимый мне ModbusTCP, но это простой протокол, на его реализацию уйдет немного времени и сил либо можно подключить dll или active-x), набор графических элементов удовлетворяет потребностям задачи, есть модуль для SQL (ну и ПИД даже). Язык программирования более классический - С, который я хорошо знаю, но не С++ - который знаю пока мало, но, с другой стороны, тоже начинаю изучать. Если смотреть в сторону .NET + Measurment Studio (с которыми я дело вообще не имел), то тут для себя я выбрал совсем другой далекий ориентир - кросплатформенный Qt, но для него на данный момент не хватает знаний именно по С++, отдельный мир, короче. В общем, пытаюсь я расширить горизонты, плавно перетечь на С++ программирование, но не отдалясь далеко от насущных задач. И вот LW мне тут кажется подходящей переходной формой.Forward писал(а):Сорри за оффтоп. Но чисто из интереса с чем связан переход на LW?Chupakabra писал(а):Пробую начать работать с LabWindows/CVI.
Я ставил себе LW и "ковырялся" в нем одно время, правда больших (да и маленьких) проектов не делал, так что достойного опыта нет... Из того что я увидел, приемуществ у LW перед LV нет вообще. Тоже надо инсталить рантайм, каких-то доп. возможнотей нет, а само "кодирование" (с т.з. скорости, удобства, дебага...) все-таки посложнее будет.
В итоге оч. удобно для закореленелых сишников, чтобы была возможность без затрат времени на внедрние в хитросплетения проводов LV сразу творить чудеса. + мировой стандарт ANSI/C, в котором лучше или хуже, но разбирается каждый программер на любой фирме. Хотя в таком случае не удобнее ли взять .NET + Measurment Studio?
С точки зрения популярности и количества предлагаемых вакансий LV имеет приемущество перед LW (опять же ИМХО)... Тут пожалуй все определяется тем, на какую платформу подсела фирма N лет назад и сейчас уже менять ее не хочет.
Может кто-то просвятит, есть ли какие либо приемущества/недостатки у LW к LV? В каких областях и почему одну платформу предпочитают другой?
А чем же .NET + Measurment Studio может быть лучше LW для задач контроля и измерения, интересно кстати и по цене сравнить, но я не располагаю ценами на .NET ?
p.s. охотно готов выслушать критику.
-
Forward
- professional
- Сообщения: 337
- Зарегистрирован: 03 мар 2008, 12:41
- Награды: 3
- Версия LabVIEW: 2010
- Откуда: Кишинев
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню.
Все тоже самое есть и в . Насчет быстродействия - хм.. не знаю.. думаю может быть ощутимо только если писать под слабые процы (или под CE например). А вот в скорости разработки LW явно проигрывает LV.Chupakabra писал(а): Почему решил остановить на LW? Подходит под задачу "на ура", субъективно быстрее работает, чем LV. Есть встроенная поддержка OPC (правда, отсутствует необходимый мне ModbusTCP, но это простой протокол, на его реализацию уйдет немного времени и сил либо можно подключить dll или active-x), набор графических элементов удовлетворяет потребностям задачи, есть модуль для SQL (ну и ПИД даже).
Может и не лучше. У меня нет большого опыта здесь. Из принципиальных отличий: другой дебаггер/компиллер; намного больше возможнотей в целом за счет .NET; не нужен RunTime; можно использовать и С#, и C/C++ (т.е. Measurment Studio можно юзать и без .NET - WinAPI, MFC...); возможно в LW есть что-то чего нет в MeasStudio, но я про это не знаю. Ну а в цене LW (4700$) и MS(4600$) не сильно отличаются. Но в случае MS нужно покупать Visual Studio и поэтому выйдет раза в 2 дороже.Chupakabra писал(а):А чем же .NET + Measurment Studio может быть лучше LW для задач контроля и измерения, интересно кстати и по цене сравнить, но я не располагаю ценами на .NET ?
Согласен, "кьют" классная штука. По производительности рвет и Compact Framework и LV Touch Panel (я проводил тесты полгода назад, WinCE 6.0, ARM9 800 MHz) и по удобству разработки все классно, + кроссплатформенность. Я остался очень доволен. В частности оч. понравилась система хелпа, наличие кучи примеров. Но опять таки намного удобнее Qt + Visual Studio, ибо их родной дебаггер сыроват еще...Chupakabra писал(а):я выбрал совсем другой далекий ориентир - кросплатформенный Qt
-
grjgrj
- professional
- Сообщения: 300
- Зарегистрирован: 18 фев 2009, 14:32
- Награды: 2
- Версия LabVIEW: 8.5-2011
- Откуда: Караганда
- Контактная информация:
Re: CVI. Заморозка GUI потока при навигации по меню
Лично мне CVI непонравилась. Если уж отходить от на что-нибудь текстовое то уж лучше сразу на Visual Studio, а там уже все необходимое через Measurment Studio юспользовать. Потому как на Visual Studio значительно больше людей пишут, чем CVI и востребованность будет выше. ИМХО
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 23 Ответы
- 4627 Просмотры
-
Последнее сообщение maxim_MA
-
- 6 Ответы
- 1645 Просмотры
-
Последнее сообщение ladik
-
- 38 Ответы
- 13305 Просмотры
-
Последнее сообщение AndreyDmitriev
-
- 2 Ответы
- 271 Просмотры
-
Последнее сообщение Optoelectronics
-
- 4 Ответы
- 1670 Просмотры
-
Последнее сообщение Borjomy_1