Уважаемые, коллеги, посоветуйте где почитать статьи об организации параллельных процессов. П. Блюма читал и стараюсь точно выполнять рекомендации и придерживаться четкой логики.
Задачу реализовал таким образом, что работают два параллельных процесса while:
а) В первом идет постоянный обмен с прибором для контроля и анализа ошибок.
б) Во втором обслуживается лицевая панель, если были события, то в первый процесс передается командная строка.
Программа работает, но часто события на лицевой панели просто игнорируются. Я бы с удовольствием приложил бы саму программу для поиска решения, но она уже большая. На лицевой панели не очень много элементов, которые сгруппированы во вкладках.
Об организации параллельных циклов
-
- user
- Сообщения: 72
- Зарегистрирован: 13 сен 2011, 18:06
- Версия LabVIEW: 2009
- Контактная информация:
-
- professor
- Сообщения: 3406
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Об организации параллельных циклов
тут затрудняюсь, только опытVladimir_T писал(а): ↑20 апр 2021, 14:30 Уважаемые, коллеги, посоветуйте где почитать статьи об организации параллельных процессов. П. Блюма читал и стараюсь точно выполнять рекомендации и придерживаться четкой логики.
значит, обработка слишком долгая.Программа работает, но часто события на лицевой панели просто игнорируются.
В настройка отлова событий есть галка "морозить FP", это значит, что другие события пропускаются. Но если этот цикл у вас только действия пользователя ловит, то как же вы строку формируете, что оно так долго работает?
-
- developer
- Сообщения: 289
- Зарегистрирован: 26 фев 2016, 06:31
- Версия LabVIEW: 18-20
- Благодарил (а): 6 раз
- Поблагодарили: 7 раз
- Контактная информация:
Re: Об организации параллельных циклов
Если есть возможность, выложите программу, интересно посмотреть как реализованы параллельные циклы
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Об организации параллельных циклов
А как Вы передаете информацию из одного цикла в другой?Vladimir_T писал(а): ↑20 апр 2021, 14:30 б) Во втором обслуживается лицевая панель, если были события, то в первый процесс передается командная строка.
Программа работает, но часто события на лицевой панели просто игнорируются.
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 72
- Зарегистрирован: 13 сен 2011, 18:06
- Версия LabVIEW: 2009
- Контактная информация:
Re: Об организации параллельных циклов
Здравствуйте, благодарю за желание помочь. Командная строка с опросом состояния формируется с частотой 0.5 сек, можно реже, но это не помогает. Отрабатываются кнопки с фиксацией, а кнопки с кратковременным нажатием и регуляторы - часто игнорируются. Раньше был ПК гораздо старее и все работало, сейчас ПК поменяли на очень современный с WIN10/64 и обнаружилась такая вот загвоздка.
Прилагаю сам прибор, шибко не критикуйте, любым советам буду рад. Программа исследовательская для разработки алгоритмов обработки массивов, потому там есть дублирующие друг друга функции.
Прием и передача с поддержкой простейшего протокола.
Прилагаю сам прибор, шибко не критикуйте, любым советам буду рад. Программа исследовательская для разработки алгоритмов обработки массивов, потому там есть дублирующие друг друга функции.
Прием и передача с поддержкой простейшего протокола.
-
- user
- Сообщения: 72
- Зарегистрирован: 13 сен 2011, 18:06
- Версия LabVIEW: 2009
- Контактная информация:
Re: Об организации параллельных циклов
Взаимодействие между параллельными циклами через локальные переменные. Читал, что это очень затратный механизм, но ничего другого не смог придумать. Или семафоры и сообщения нужно осваивать?А как Вы передаете информацию из одного цикла в другой?
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Об организации параллельных циклов
Для начала я бы все кнопки перевёл в режим Latch и поместил внутрь Event-структуры (чтобы соответствующая кнопка отщёлкивалась после клика по ней). Сейчас часть кнопок Latch, часть Switch, какие-то внутри эвента, какие-то снаружи болтаются... Надо бы всё это унифицировать. Дальше, есть Event Inspector Window - позволяет посмотреть, какие события происходили в Event-структуре. Откройте окно инспектора, нажимайте кнопки и смотрите, что как реагирует. Можете ещё и в отладочную переменную (строка / массив строк) записывать факт нажатия, если так проще.
Дело не в том, что затратный. С локалками возможны ситуации гонки. Здесь, скорее всего, что-то такое и происходит. По быстродействию локалки не намного хуже прямых операций с контролами/индикаторами. А очереди/уведомители стоит изучить, вещь полезная. Семафоры не так часто используются.Vladimir_T писал(а): ↑21 апр 2021, 09:15Взаимодействие между параллельными циклами через локальные переменные. Читал, что это очень затратный механизм, но ничего другого не смог придумать. Или семафоры и сообщения нужно осваивать?
-
- user
- Сообщения: 72
- Зарегистрирован: 13 сен 2011, 18:06
- Версия LabVIEW: 2009
- Контактная информация:
Re: Об организации параллельных циклов
Благодарю за ценные советы, по результатам доработок - напишу!dadreamer писал(а): ↑21 апр 2021, 11:57 Для начала я бы все кнопки перевёл в режим Latch и поместил внутрь Event-структуры (чтобы соответствующая кнопка отщёлкивалась после клика по ней). Сейчас часть кнопок Latch, часть Switch, какие-то внутри эвента, какие-то снаружи болтаются... Надо бы всё это унифицировать. Дальше, есть Event Inspector Window - позволяет посмотреть, какие события происходили в Event-структуре. Откройте окно инспектора, нажимайте кнопки и смотрите, что как реагирует. Можете ещё и в отладочную переменную (строка / массив строк) записывать факт нажатия, если так проще.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение