Event Structure, Очереди etc

Создание приложений, библиотек, инсталляторов
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Event Structure, Очереди etc

Сообщение Vitekkz88 »

Всем здравствуйте! Вопрос такой: у кого сколько бывало Event-ов в структуре(максимум/в среднем)? Сколько считается нормой по правилам хорошего тона?
У кого сколько очередей в проекте используется в среднем/максимум? Можно примерно. Спасибо!
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение rbl »

Vitekkz88 писал(а):Всем здравствуйте! Вопрос такой: у кого сколько бывало Event-ов в структуре(максимум/в среднем)? Сколько считается нормой по правилам хорошего тона?
У кого сколько очередей в проекте используется в среднем/максимум? Можно примерно. Спасибо!
40/~10
Не вижу криминала в большом кол-во евентов в структуре, по мне так наоборот удобно читать.
12/~6
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Kosist »

Как по мне, то такого правила нет - сколько нужно ивентов/очередей, столько и создавайте. Если есть возможность сократить/объединить - то нужно воспользоваться. А если нет - то ничего не поделать ))
У меня сейчас интерфейс с 30+ контролов, плюс обработка меню, и т.д. Объединить мало что получиться - поэтому будет ивентов много; но в конце-концов это не проблема.
Мы делили апельсин - много наших полегло...
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Vitekkz88 »

rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Artem.spb

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

Re: Event Structure, Очереди etc

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

я даже больше скажу, я не только на контролы UI события навешиваю, но и ещё свои создаю :)
По мне так удобнее сделать несколько событий на разные типы данных, чем делать очередь с парсингом строки.
Особенно удобно, когда одно оповещение надо отправить нескольким получателям: все, кто зарегистрировал событие, получают уведомление.
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение rbl »

Vitekkz88 писал(а):rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
У меня тоже контролы в кластерах, но я создаю евент на изменение кластера в целом, а что именно изменилось нахожу по "межкадровой разнице" нового и старого значения. Тем самым удалось очень сильно сократить кол-во евентов.
70 это уже серьезно, на экран то хоть список влазит? ;)
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Kosist »

rbl писал(а):У меня тоже контролы в кластерах, но я создаю евент на изменение кластера в целом, а что именно изменилось нахожу по "межкадровой разнице" нового и старого значения. Тем самым удалось очень сильно сократить кол-во евентов.
70 это уже серьезно, на экран то хоть список влазит? ;)
Годная идея; хотя тогда появляется вопрос - а зачем контролы пихать в кластер, если все равно обрабатываются они по отдельности? Именно из-за этих workaround-ов в обработке событий, и т.д., я стараюсь не использовать кластеры на фронт панели вообще, только в крайних случаях.
Vitekkz88 писал(а):rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
Все зависит от приложения - если все эти контролы не однотипные и логически не связанные, то придется тогда работать со всем этим...
Я бы в label контрола добавлял бы префиксы (например, btn, num, str, и т.д.), а затем погруппировал (rearrange cases), чтобы или евенты на одинаковый тип контролы были рядом; или что еще лучше, евенты на логически связанные контролы были рядом (например, евенты контролв одного кластера). Также тогда сгруппировать user events (если таковый имеются), и т.д. Тогда хотя бы глазу будет куда цепляться...
Если будет вообще неудобно, можно создать событие-пустышку, с контролом с названием в качестве сепаратора событий, что-то типа такого:
Events Separators.png
Events Separators.png (14.33 КБ) 12717 просмотров
Мы делили апельсин - много наших полегло...
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Vitekkz88 »

На экран не влазит :-) на FHD экране у меня 52 event-а помещается и усё. Кстати, хорошая идея находить по разнице между текущим и предыдущим...я не подумал об этом, спасибо!
У меня сейчас 12 кластеров и 180 элементов(контролов и индикаторов) в в них. Делать кластер c ссылками на каждый контрол для такого количества элементов - это караул. Поэтому я работаю с кластером ссылок на кластеры.Аналогично и для очередей. Есть отдельный кластер, в который я всё-таки выношу отдельные элементы, свойства которых требуется изменять: дизейблить или делать невидимыми например. Но их штук 30 всего, ненапряжно.
Вложения
Example.png
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Event Structure, Очереди etc

Сообщение IvanLis »

Vitekkz88, А для чего столько очередей, неужели столько циклов вращаться будет параллельно?
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение rbl »

Kosist писал(а):Годная идея; хотя тогда появляется вопрос - а зачем контролы пихать в кластер, если все равно обрабатываются они по отдельности? Именно из-за этих workaround-ов в обработке событий, и т.д., я стараюсь не использовать кластеры на фронт панели вообще, только в крайних случаях.
1 Для меня основной профит кластера контролов в том, что у меня часть адаптеров обмена работает в классическом режиме (адаптер сам хранит свое состояние), а часть в импульсном (хранить его состояние приходится мне). Вышеописанный механизм позволил мне решить эту проблему легко и достаточно красиво.
2 Есть возможность создавать евенты сразу на комбинацию нажатых кнопок, не задумываясь о гонках и семафорах.
3 Один раз написанный алгоритм обработки "межкадровой разности" легко кочует из проекта в проект, так что работы это не прибавляет, а скорее наоборот.
4 Проще создавать однотипные группы на фронтпанели.
5 Все события обрабатываются в одном месте, туда же подводятся кластеры кластеров - ошибок, данных, сообщений и прочего. Легко читать, легко править. Плюс исключаются всякие "нежданчики" из-за гонок и нештатное функционирование общего алгоритма ("говорят", что нечто подобное подвело очень большой космический проект).

Это из того, что с ходу вспомнил... наверняка при создании были и другие соображения ;)
rbl
assistant
assistant
Сообщения: 122
Зарегистрирован: 09 дек 2014, 10:14
Версия LabVIEW: 7-2015
Откуда: Санкт-Петербург
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение rbl »

Vitekkz88 писал(а):На экран не влазит :-) на FHD экране у меня 52 event-а помещается и усё. Кстати, хорошая идея находить по разнице между текущим и предыдущим...я не подумал об этом, спасибо!
У меня сейчас 12 кластеров и 180 элементов(контролов и индикаторов) в в них. Делать кластер c ссылками на каждый контрол для такого количества элементов - это караул. Поэтому я работаю с кластером ссылок на кластеры.Аналогично и для очередей. Есть отдельный кластер, в который я всё-таки выношу отдельные элементы, свойства которых требуется изменять: дизейблить или делать невидимыми например. Но их штук 30 всего, ненапряжно.
Не думали над сокращением однотипных очередей? Добавить префикс команды при формировании и парсер при обработке. Структура получается попроще.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Vitekkz88 »

IvanLis, пока 15 циклов и 30 очередей. 4 порта для отправки/принятия данных+1 порт для управления всяким. Часть очередей используются для конвейера. То есть я не делаю всю обработку в одном цикле после накопления нужного количество данных.
rbl, можно объединить очереди команд. Но я пошёл по принципу "разделяй и властвуй". Для каждого интерфейса своя очередь команд+пару очередей с протокольными и служебными командами. Как-то так. Остальные очереди не объединить. Это выльется в тот же самый набор очередей, только вдовесок мы будем парсить и расталкивать данные по нужным очередям. Либо обрабатывать последовательно каждый пакет из очереди сразу, а не в отдельном потоке.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Event Structure, Очереди etc

Сообщение Borjomy_1 »

А я уменьшаю количество фреймов в Event Structure следующим образом: Вешаю на один фрейм несколько событий, от разных контролов, которые обрабатываются близко по функционалу. Для того, чтобы определить, какой контрол вызвал событие, я использую Ref. Т.е либо перед структурой Event, либо сразу ней, создается константный массив Reference контролов, которые обрабатываются в данном фрейме. При вызове фрейма производится поиск Refа вызвавшего контрола в массиве Reference и результат поиска подается на Case. А уже в нем производится обработка, которая специфична для контрола. Одинаковую обработку можно производить вне кейса. Так легче обрабатывать, например, реакцию на разные кнопки, но относящиеся к схожим операциям.
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Event Structure, Очереди etc

Сообщение Vitekkz88 »

Borjomy_1, я тоже такой вариант продумывал. Он похож на обработку через UserEvent. Только вместо event-ов мы case пользуем.
А может есть фишка с поиском нужного event-а?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2210
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 26 раз

Re: Event Structure, Очереди etc

Сообщение Borjomy_1 »

Ну в евенте же есть реф источника события. Вот по нему и поиск проводить
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Создание приложений»