Event Structure, Очереди etc
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Event Structure, Очереди etc
Всем здравствуйте! Вопрос такой: у кого сколько бывало Event-ов в структуре(максимум/в среднем)? Сколько считается нормой по правилам хорошего тона?
У кого сколько очередей в проекте используется в среднем/максимум? Можно примерно. Спасибо!
У кого сколько очередей в проекте используется в среднем/максимум? Можно примерно. Спасибо!
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- assistant
- Сообщения: 122
- Зарегистрирован: 09 дек 2014, 10:14
- Версия LabVIEW: 7-2015
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Event Structure, Очереди etc
40/~10Vitekkz88 писал(а):Всем здравствуйте! Вопрос такой: у кого сколько бывало Event-ов в структуре(максимум/в среднем)? Сколько считается нормой по правилам хорошего тона?
У кого сколько очередей в проекте используется в среднем/максимум? Можно примерно. Спасибо!
Не вижу криминала в большом кол-во евентов в структуре, по мне так наоборот удобно читать.
12/~6
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Event Structure, Очереди etc
Как по мне, то такого правила нет - сколько нужно ивентов/очередей, столько и создавайте. Если есть возможность сократить/объединить - то нужно воспользоваться. А если нет - то ничего не поделать ))
У меня сейчас интерфейс с 30+ контролов, плюс обработка меню, и т.д. Объединить мало что получиться - поэтому будет ивентов много; но в конце-концов это не проблема.
У меня сейчас интерфейс с 30+ контролов, плюс обработка меню, и т.д. Объединить мало что получиться - поэтому будет ивентов много; но в конце-концов это не проблема.
Мы делили апельсин - много наших полегло...
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Event Structure, Очереди etc
rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- professor
- Сообщения: 3404
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 175 раз
- Контактная информация:
Re: Event Structure, Очереди etc
я даже больше скажу, я не только на контролы UI события навешиваю, но и ещё свои создаю :)
По мне так удобнее сделать несколько событий на разные типы данных, чем делать очередь с парсингом строки.
Особенно удобно, когда одно оповещение надо отправить нескольким получателям: все, кто зарегистрировал событие, получают уведомление.
По мне так удобнее сделать несколько событий на разные типы данных, чем делать очередь с парсингом строки.
Особенно удобно, когда одно оповещение надо отправить нескольким получателям: все, кто зарегистрировал событие, получают уведомление.
-
- assistant
- Сообщения: 122
- Зарегистрирован: 09 дек 2014, 10:14
- Версия LabVIEW: 7-2015
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Event Structure, Очереди etc
У меня тоже контролы в кластерах, но я создаю евент на изменение кластера в целом, а что именно изменилось нахожу по "межкадровой разнице" нового и старого значения. Тем самым удалось очень сильно сократить кол-во евентов.Vitekkz88 писал(а):rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
70 это уже серьезно, на экран то хоть список влазит? ;)
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Event Structure, Очереди etc
Годная идея; хотя тогда появляется вопрос - а зачем контролы пихать в кластер, если все равно обрабатываются они по отдельности? Именно из-за этих workaround-ов в обработке событий, и т.д., я стараюсь не использовать кластеры на фронт панели вообще, только в крайних случаях.rbl писал(а):У меня тоже контролы в кластерах, но я создаю евент на изменение кластера в целом, а что именно изменилось нахожу по "межкадровой разнице" нового и старого значения. Тем самым удалось очень сильно сократить кол-во евентов.
70 это уже серьезно, на экран то хоть список влазит? ;)
Все зависит от приложения - если все эти контролы не однотипные и логически не связанные, то придется тогда работать со всем этим...Vitekkz88 писал(а):rbl, да я тоже криминала не вижу. Но не удобно блин...у меня контролы в кластерах, искать неудобно по списку event-ов. Kosist, у меня кол-во событий, уже порядка 70. Вот я и задумался...многовато что-то. Или это еще ниачом? Очередей у меня 30 шт. сейчас.
Я бы в label контрола добавлял бы префиксы (например, btn, num, str, и т.д.), а затем погруппировал (rearrange cases), чтобы или евенты на одинаковый тип контролы были рядом; или что еще лучше, евенты на логически связанные контролы были рядом (например, евенты контролв одного кластера). Также тогда сгруппировать user events (если таковый имеются), и т.д. Тогда хотя бы глазу будет куда цепляться...
Если будет вообще неудобно, можно создать событие-пустышку, с контролом с названием в качестве сепаратора событий, что-то типа такого:
Мы делили апельсин - много наших полегло...
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Event Structure, Очереди etc
На экран не влазит :-) на FHD экране у меня 52 event-а помещается и усё. Кстати, хорошая идея находить по разнице между текущим и предыдущим...я не подумал об этом, спасибо!
У меня сейчас 12 кластеров и 180 элементов(контролов и индикаторов) в в них. Делать кластер c ссылками на каждый контрол для такого количества элементов - это караул. Поэтому я работаю с кластером ссылок на кластеры.Аналогично и для очередей. Есть отдельный кластер, в который я всё-таки выношу отдельные элементы, свойства которых требуется изменять: дизейблить или делать невидимыми например. Но их штук 30 всего, ненапряжно.
У меня сейчас 12 кластеров и 180 элементов(контролов и индикаторов) в в них. Делать кластер c ссылками на каждый контрол для такого количества элементов - это караул. Поэтому я работаю с кластером ссылок на кластеры.Аналогично и для очередей. Есть отдельный кластер, в который я всё-таки выношу отдельные элементы, свойства которых требуется изменять: дизейблить или делать невидимыми например. Но их штук 30 всего, ненапряжно.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Event Structure, Очереди etc
Vitekkz88, А для чего столько очередей, неужели столько циклов вращаться будет параллельно?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- assistant
- Сообщения: 122
- Зарегистрирован: 09 дек 2014, 10:14
- Версия LabVIEW: 7-2015
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Event Structure, Очереди etc
1 Для меня основной профит кластера контролов в том, что у меня часть адаптеров обмена работает в классическом режиме (адаптер сам хранит свое состояние), а часть в импульсном (хранить его состояние приходится мне). Вышеописанный механизм позволил мне решить эту проблему легко и достаточно красиво.Kosist писал(а):Годная идея; хотя тогда появляется вопрос - а зачем контролы пихать в кластер, если все равно обрабатываются они по отдельности? Именно из-за этих workaround-ов в обработке событий, и т.д., я стараюсь не использовать кластеры на фронт панели вообще, только в крайних случаях.
2 Есть возможность создавать евенты сразу на комбинацию нажатых кнопок, не задумываясь о гонках и семафорах.
3 Один раз написанный алгоритм обработки "межкадровой разности" легко кочует из проекта в проект, так что работы это не прибавляет, а скорее наоборот.
4 Проще создавать однотипные группы на фронтпанели.
5 Все события обрабатываются в одном месте, туда же подводятся кластеры кластеров - ошибок, данных, сообщений и прочего. Легко читать, легко править. Плюс исключаются всякие "нежданчики" из-за гонок и нештатное функционирование общего алгоритма ("говорят", что нечто подобное подвело очень большой космический проект).
Это из того, что с ходу вспомнил... наверняка при создании были и другие соображения ;)
-
- assistant
- Сообщения: 122
- Зарегистрирован: 09 дек 2014, 10:14
- Версия LabVIEW: 7-2015
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Event Structure, Очереди etc
Не думали над сокращением однотипных очередей? Добавить префикс команды при формировании и парсер при обработке. Структура получается попроще.Vitekkz88 писал(а):На экран не влазит :-) на FHD экране у меня 52 event-а помещается и усё. Кстати, хорошая идея находить по разнице между текущим и предыдущим...я не подумал об этом, спасибо!
У меня сейчас 12 кластеров и 180 элементов(контролов и индикаторов) в в них. Делать кластер c ссылками на каждый контрол для такого количества элементов - это караул. Поэтому я работаю с кластером ссылок на кластеры.Аналогично и для очередей. Есть отдельный кластер, в который я всё-таки выношу отдельные элементы, свойства которых требуется изменять: дизейблить или делать невидимыми например. Но их штук 30 всего, ненапряжно.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Event Structure, Очереди etc
IvanLis, пока 15 циклов и 30 очередей. 4 порта для отправки/принятия данных+1 порт для управления всяким. Часть очередей используются для конвейера. То есть я не делаю всю обработку в одном цикле после накопления нужного количество данных.
rbl, можно объединить очереди команд. Но я пошёл по принципу "разделяй и властвуй". Для каждого интерфейса своя очередь команд+пару очередей с протокольными и служебными командами. Как-то так. Остальные очереди не объединить. Это выльется в тот же самый набор очередей, только вдовесок мы будем парсить и расталкивать данные по нужным очередям. Либо обрабатывать последовательно каждый пакет из очереди сразу, а не в отдельном потоке.
rbl, можно объединить очереди команд. Но я пошёл по принципу "разделяй и властвуй". Для каждого интерфейса своя очередь команд+пару очередей с протокольными и служебными командами. Как-то так. Остальные очереди не объединить. Это выльется в тот же самый набор очередей, только вдовесок мы будем парсить и расталкивать данные по нужным очередям. Либо обрабатывать последовательно каждый пакет из очереди сразу, а не в отдельном потоке.
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Event Structure, Очереди etc
А я уменьшаю количество фреймов в Event Structure следующим образом: Вешаю на один фрейм несколько событий, от разных контролов, которые обрабатываются близко по функционалу. Для того, чтобы определить, какой контрол вызвал событие, я использую Ref. Т.е либо перед структурой Event, либо сразу ней, создается константный массив Reference контролов, которые обрабатываются в данном фрейме. При вызове фрейма производится поиск Refа вызвавшего контрола в массиве Reference и результат поиска подается на Case. А уже в нем производится обработка, которая специфична для контрола. Одинаковую обработку можно производить вне кейса. Так легче обрабатывать, например, реакцию на разные кнопки, но относящиеся к схожим операциям.
-
Vitekkz88
- expert
- Сообщения: 1100
- Зарегистрирован: 21 янв 2014, 15:45
- Награды: 3
- Версия LabVIEW: 12,13,14
- Откуда: Томск
- Контактная информация:
Re: Event Structure, Очереди etc
Borjomy_1, я тоже такой вариант продумывал. Он похож на обработку через UserEvent. Только вместо event-ов мы case пользуем.
А может есть фишка с поиском нужного event-а?
А может есть фишка с поиском нужного event-а?
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
-А. И. Солженицын
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Event Structure, Очереди etc
Ну в евенте же есть реф источника события. Вот по нему и поиск проводить
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 6 Ответы
- 231 Просмотры
-
Последнее сообщение Artem.spb