CVI. Заморозка GUI потока при навигации по меню

Ответить
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

CVI. Заморозка GUI потока при навигации по меню

Сообщение Chupakabra »

Пробую начать работать с LabWindows/CVI. Cтолкнулся с такой особенность. При навигации по меню или перетаскивания окна во время выполнения приложения с выводом на GUI происходит остановка вывода. Когда отпускаю мышкой окно, вывод продолжается. Как победить?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Eugen Graf »

Проблема понятна. Может быть обработчик событий лицевой панели и вывод данных на лицевую панель находятся в одном потоке?
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Chupakabra »

eg писал(а):Проблема понятна. Может быть обработчик событий лицевой панели и вывод данных на лицевую панель находятся в одном потоке?
Да, так и есть. Приложие (из базы примеров) однопоточное. Но работа таймера блокируется совсем (при нажатии и удержании мышкой на title bar).

Решение нашлось:
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

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Forward »

Chupakabra писал(а):Пробую начать работать с LabWindows/CVI.
Сорри за оффтоп. Но чисто из интереса с чем связан переход на LW?
Я ставил себе LW и "ковырялся" в нем одно время, правда больших (да и маленьких) проектов не делал, так что достойного опыта нет... Из того что я увидел, приемуществ у LW перед LV нет вообще. Тоже надо инсталить рантайм, каких-то доп. возможнотей нет, а само "кодирование" (с т.з. скорости, удобства, дебага...) все-таки посложнее будет.
В итоге оч. удобно для закореленелых сишников, чтобы была возможность без затрат времени на внедрние в хитросплетения проводов LV сразу творить чудеса. + мировой стандарт ANSI/C, в котором лучше или хуже, но разбирается каждый программер на любой фирме. Хотя в таком случае не удобнее ли взять .NET + Measurment Studio?
С точки зрения популярности и количества предлагаемых вакансий LV имеет приемущество перед LW (опять же ИМХО)... Тут пожалуй все определяется тем, на какую платформу подсела фирма N лет назад и сейчас уже менять ее не хочет.

Может кто-то просвятит, есть ли какие либо приемущества/недостатки у LW к LV? В каких областях и почему одну платформу предпочитают другой?
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Eugen Graf »

Forward, Я тоже твоего мнения. Я бы лучше взял :labview: , ну или на крайняк Measurement Studio. Но на вкус и цвет... :wink:
Аватара пользователя
Chupakabra

Tutorials
professional
professional
Сообщения: 360
Зарегистрирован: 21 янв 2009, 10:50
Награды: 1
Версия LabVIEW: 2015
Откуда: Москва
Поблагодарили: 4 раза
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Chupakabra »

Forward писал(а):
Chupakabra писал(а):Пробую начать работать с LabWindows/CVI.
Сорри за оффтоп. Но чисто из интереса с чем связан переход на LW?
Я ставил себе LW и "ковырялся" в нем одно время, правда больших (да и маленьких) проектов не делал, так что достойного опыта нет... Из того что я увидел, приемуществ у LW перед LV нет вообще. Тоже надо инсталить рантайм, каких-то доп. возможнотей нет, а само "кодирование" (с т.з. скорости, удобства, дебага...) все-таки посложнее будет.
В итоге оч. удобно для закореленелых сишников, чтобы была возможность без затрат времени на внедрние в хитросплетения проводов LV сразу творить чудеса. + мировой стандарт ANSI/C, в котором лучше или хуже, но разбирается каждый программер на любой фирме. Хотя в таком случае не удобнее ли взять .NET + Measurment Studio?
С точки зрения популярности и количества предлагаемых вакансий LV имеет приемущество перед LW (опять же ИМХО)... Тут пожалуй все определяется тем, на какую платформу подсела фирма N лет назад и сейчас уже менять ее не хочет.

Может кто-то просвятит, есть ли какие либо приемущества/недостатки у LW к LV? В каких областях и почему одну платформу предпочитают другой?
Да я вот тоже хочу поковыряться. Собственно, задача у меня найти альтернативу дорогостоящей SCADA-системе (для каждого проекта покупается run-time на необходимое число точек ввода-вывода) для небольших несложных проектов, в основном, мониторинг (измерения). Т.е. раз купить среду без последующей оплаты рантаймов. Почему решил остановить на LW? Подходит под задачу "на ура", субъективно быстрее работает, чем LV. Есть встроенная поддержка OPC (правда, отсутствует необходимый мне ModbusTCP, но это простой протокол, на его реализацию уйдет немного времени и сил либо можно подключить dll или active-x), набор графических элементов удовлетворяет потребностям задачи, есть модуль для SQL (ну и ПИД даже). Язык программирования более классический - С, который я хорошо знаю, но не С++ - который знаю пока мало, но, с другой стороны, тоже начинаю изучать. Если смотреть в сторону .NET + Measurment Studio (с которыми я дело вообще не имел), то тут для себя я выбрал совсем другой далекий ориентир - кросплатформенный Qt, но для него на данный момент не хватает знаний именно по С++, отдельный мир, короче. В общем, пытаюсь я расширить горизонты, плавно перетечь на С++ программирование, но не отдалясь далеко от насущных задач. И вот LW мне тут кажется подходящей переходной формой.

А чем же .NET + Measurment Studio может быть лучше LW для задач контроля и измерения, интересно кстати и по цене сравнить, но я не располагаю ценами на .NET ?

p.s. охотно готов выслушать критику.
Аватара пользователя
Forward

Activity Tutorials Black
professional
professional
Сообщения: 337
Зарегистрирован: 03 мар 2008, 12:41
Награды: 3
Версия LabVIEW: 2010
Откуда: Кишинев
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню.

Сообщение Forward »

Chupakabra писал(а): Почему решил остановить на LW? Подходит под задачу "на ура", субъективно быстрее работает, чем LV. Есть встроенная поддержка OPC (правда, отсутствует необходимый мне ModbusTCP, но это простой протокол, на его реализацию уйдет немного времени и сил либо можно подключить dll или active-x), набор графических элементов удовлетворяет потребностям задачи, есть модуль для SQL (ну и ПИД даже).
Все тоже самое есть и в :labview:. Насчет быстродействия - хм.. не знаю.. думаю может быть ощутимо только если писать под слабые процы (или под CE например). А вот в скорости разработки LW явно проигрывает LV.
Chupakabra писал(а):А чем же .NET + Measurment Studio может быть лучше LW для задач контроля и измерения, интересно кстати и по цене сравнить, но я не располагаю ценами на .NET ?
Может и не лучше. У меня нет большого опыта здесь. Из принципиальных отличий: другой дебаггер/компиллер; намного больше возможнотей в целом за счет .NET; не нужен RunTime; можно использовать и С#, и C/C++ (т.е. Measurment Studio можно юзать и без .NET - WinAPI, MFC...); возможно в LW есть что-то чего нет в MeasStudio, но я про это не знаю. Ну а в цене LW (4700$) и MS(4600$) не сильно отличаются. Но в случае MS нужно покупать Visual Studio и поэтому выйдет раза в 2 дороже.
Chupakabra писал(а):я выбрал совсем другой далекий ориентир - кросплатформенный Qt
Согласен, "кьют" классная штука. По производительности рвет и Compact Framework и LV Touch Panel (я проводил тесты полгода назад, WinCE 6.0, ARM9 800 MHz) и по удобству разработки все классно, + кроссплатформенность. Я остался очень доволен. В частности оч. понравилась система хелпа, наличие кучи примеров. Но опять таки намного удобнее Qt + Visual Studio, ибо их родной дебаггер сыроват еще...
Аватара пользователя
grjgrj

Gold Bronze
professional
professional
Сообщения: 300
Зарегистрирован: 18 фев 2009, 14:32
Награды: 2
Версия LabVIEW: 8.5-2011
Откуда: Караганда
Контактная информация:

Re: CVI. Заморозка GUI потока при навигации по меню

Сообщение grjgrj »

Лично мне CVI непонравилась. Если уж отходить от :labview: на что-нибудь текстовое то уж лучше сразу на Visual Studio, а там уже все необходимое через Measurment Studio юспользовать. Потому как на Visual Studio значительно больше людей пишут, чем CVI и востребованность будет выше. ИМХО
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «LabWindows / CVI / Measurement Studio»