Задачи в очередь

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

Dryundel писал(а): 03 ноя 2019, 16:39 След. вопрос.
После закрытия клапана должна быть задержка закрытия? Какая?
Или клапан должен суммировать задержку открытия исходя из суммарной длительности разных нажатия кнопок?
Допустим эти же 3 кнопки нажали 15 раз с разным временем удержания и в разном порядке, клапан должен отработать кажудю кнопку в порядке очереди и ждать следующей команды
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Задачи в очередь

Сообщение edyapd »

Должна ли быть пауза между комнатами? Я имею ввиду, в первой нажали 1 и 2 держат. Во второй нажали 1 и 3 (при этом я так понял, что они не знают, что система уже занята), подержали скажем 10 и 15 сек на клапан. Должна ли система сделать паузу после того как отработала первую комнату, прежде чем перейти ко второй?
И должна ли система включать клапана сразу же, если она свободна?
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

edyapd писал(а): 03 ноя 2019, 16:46 Должна ли быть пауза между комнатами? Я имею ввиду, в первой нажали 1 и 2 держат. Во второй нажали 1 и 3 (при этом я так понял, что они не знают, что система уже занята), подержали скажем 10 и 15 сек на клапан. Должна ли система сделать паузу после того как отработала первую комнату, прежде чем перейти ко второй?
И должна ли система включать клапана сразу же, если она свободна?
Без пауз, отрабатывает все поступившие сигналы один за другим, поступило 20 сигналов, отработала в порядке очереди и ждёт следующее поступление
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

KeyArduino писал(а): 03 ноя 2019, 16:44 Допустим эти же 3 кнопки нажали 15 раз с разным временем удержания и в разном порядке, клапан должен отработать кажудю кнопку в порядке очереди и ждать следующей команды
Это понятно уже.
Вы не ответили на след. вопрос.
Dryundel писал(а): 03 ноя 2019, 16:39 След. вопрос.
После закрытия клапана должна быть задержка закрытия? Какая?
Или клапан должен суммировать задержку открытия исходя из суммарной длительности нажатия разных кнопок?
Отправлено спустя 1 минуту 47 секунд:
KeyArduino писал(а): 03 ноя 2019, 16:49 Без пауз, отрабатывает все поступившие сигналы один за другим, поступило 20 сигналов, отработала в порядке очереди и ждёт следующее поступление
Почти ответили. Не понятно - клапан должен закрываться между отработкой нажатий разных кнопок?
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Задачи в очередь

Сообщение edyapd »

Пожалуй если бы вы нарисовали что-то подобное, а в самом низу то, как это должна отработать система, то было бы намного понятней.
потому как если клапана независимы, то можно ли отрабатывать команды следующей комнаты свободным клапаном, в то время как комната не освободила ещё все клапана.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

Упс!
Похоже топикстартер не выдержал шквала вопросов. :)
Только бы не сердечный удар!
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

Dryundel писал(а): 03 ноя 2019, 16:53 Почти ответили. Не понятно - клапан должен закрываться между отработкой нажатий разных кнопок?
Да, должен закрываться, то есть полностью отрабатывать цикл, закрываться и открываться при поступлении следующей задачи или если задачи стоят в очереди. Принял, открылся на энное количество секунд, отработал закрылся, следующая задача
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

KeyArduino писал(а): 03 ноя 2019, 16:49 Без пауз, отрабатывает все поступившие сигналы один за другим, поступило 20 сигналов, отработала в порядке очереди и ждёт следующее поступление
Если клапан при отработке всех задач в очереди не должен закрываться то Вам не нужна очередь.
Надо просто суммировать длительность всех задач на открытие, одновременно уменьшая это время текущим временем.
Такой алгоритм будет гораздо проще очереди, а результат будет тем же.
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

edyapd писал(а): 03 ноя 2019, 17:01 Пожалуй если бы вы нарисовали что-то подобное, а в самом низу то, как это должна отработать система, то было бы намного понятней.
потому как если клапана независимы, то можно ли отрабатывать команды следующей комнаты свободным клапаном, в то время как комната не освободила ещё все клапана.
отработала команды с одной комнаты, переходит к следующей и т.д., а тем временем с комнат может набиться с десяток а то и больше команд, вот их нужно ставить (записывать) в очередь, и в порядке очереди выполнять

Отправлено спустя 4 минуты 26 секунд:
Dryundel писал(а): 03 ноя 2019, 17:08 Если клапан при отработке всех задач в очереди не должен закрываться то Вам не нужна очередь.
Вот именно что заканчивать задание клапан должен закрытием, отработал одно закрылся, отработал следующее закрылся и т.д. Типа как на конвейере тару наполняют, подъехала тара наполнил закрылся, подъехала следующая, наполнил закрылся
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

KeyArduino писал(а): 03 ноя 2019, 17:08 Да, должен закрываться, то есть полностью отрабатывать цикл, закрываться и открываться при поступлении следующей задачи или если задачи стоят в очереди. Принял, открылся на энное количество секунд, отработал закрылся, следующая задача
В таком случае очередь необходима.
KeyArduino писал(а): 03 ноя 2019, 16:41 Может как то с блоками массивов можно организовать, если кнопками задачи по порядку будут записываться в массив а потом считывать и выполнять по очереди?
Эт я размышляю, на деле не знаю будет ли работать
Мысль верная. Только для решения поставленной задачи в штатных блоках нехватает FIFO.
Это почти то-же самое что и Стек.
С той лишь разницей что в Стеке "последний пришел - первый ушел", а в FIFO «первым пришёл — первым ушёл»
Был бы такой блок все бы упростилось.
Аватара пользователя
Rovki
Полковник
Сообщения: 5735
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Задачи в очередь

Сообщение Rovki »

KeyArduino писал(а): 03 ноя 2019, 16:38
Rovki писал(а): 03 ноя 2019, 16:23 По тому как написал схема такая получается и работает
Блоки памяти тут я как понял не используются? Ведь допустим в разных комнатах по нажимали кнопки многократно, на ардуино прилетело допустим 15 команд по открытию клапанов, где, каким блоком она их будет собирать а потом отправлять на выполнение?
В моей схеме этого нет ибо у вас не описано ,что такое команда . У вас было сказано что команда это нажатие кнопки ,а работа клапана по времени равна времени нажатия .Поэтому запоминать кто сколько держал и сколько нажимал не представляеся не возможным ,нужно просто время распределить между пользователями и организовать очередь пользователей для подачи команд управления ,а не запоминать кто когда нажимал и сколько .

Отправлено спустя 4 минуты 31 секунду:
KeyArduino писал(а): 03 ноя 2019, 17:08
Dryundel писал(а): 03 ноя 2019, 16:53 Почти ответили. Не понятно - клапан должен закрываться между отработкой нажатий разных кнопок?
Да, должен закрываться, то есть полностью отрабатывать цикл, закрываться и открываться при поступлении следующей задачи или если задачи стоят в очереди. Принял, открылся на энное количество секунд, отработал закрылся, следующая задача
Если каждый будет нажимать кнопки сколько хочет раз и на любое время ,то как узнать что нужно переходить у другой комнате ???
Вообщем задание сырое и не продуманное .
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

Идея есть. Задействуем стек. Пишем в него время нажатий в миллисекундах. Считываем последнее значение массива.
Ведь я так понял конкретное открытие клапана связывать с конкретной кнопкой не надо. Критично лишь время открытия и последовательность.
Надо как то тактировать постоянное продвижение с в стеке и еще связать это с временем отработки.

Надо пробовать.
Бин! Еще понимать бы для чего это нужно. :)
ecoins
Полковник
Сообщения: 4012
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 158 раз

Задачи в очередь

Сообщение ecoins »

Dryundel писал(а): 03 ноя 2019, 16:43 ecoins писал(а): ↑Сегодня{, 13:34}
Это реализовано в библиотеках ecoins - пользовательский блок "Диспетчер задач"
Очень интересно. И как же там организована очередь? Я вроде не заметил там подобия FIFO . А можно поподробней?
Здесь очень живое прикладное обсуждение - напишу об этом в ветке "Разработки ecoins".
Аватара пользователя
Rovki
Полковник
Сообщения: 5735
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Задачи в очередь

Сообщение Rovki »

Dryundel писал(а): 03 ноя 2019, 17:55 Идея есть. Задействуем стек. Пишем в него время нажатий в миллисекундах. Считываем последнее значение массива.
Ведь я так понял конкретное открытие клапана связывать с конкретной кнопкой не надо. Критично лишь время открытия и последовательность.
Надо как то тактировать постоянное продвижение с в стеке и еще связать это с временем отработки.

Надо пробовать.
Бин! Еще понимать бы для чего это нужно. :)
Кнопка однозначно связывается с клапаном ...3 кнопки - 3 клапана- 3 комнаты
Электронщик до мозга костей и не только
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Задачи в очередь

Сообщение edyapd »

KeyArduino писал(а): 03 ноя 2019, 13:19 Если по подробней, то с трёх комнат (три блока управления с тремя кнопками) поступают сигналы на блок управления, который будет отрабатывать эти задачи в порядке поступившей очереди. К блоку выполнения подключены 3 клапана (Всё это представляет из себя ардуино, 9 кнопок (по 3 в каждой комнате) и к ардуино подключены 3 клапана.
Например: Независимо друг от друга на ардуино подаються сигналы с разных комнат (С первой допустим команда включить 2 и 3 клапан (время отработки клапана зависит от времени удержания кнопки), со второй включить 1 и 2 клапан и с третей включить 1 и 3 клапан), клапана всего 3 и нужно собрать поступившие со всех трёх комнат сигналы и выполнить их в порядке поступившей очереди.
Тут посидел, подумал. Наверное стоит сделать в каждой комнате по Ардуино, которое бы обрабатывало нажатия. При этом запрос в очередь выставляло бы только после того, как полностью сформирована команда (отпущена последняя кнопка). Только в таком случаи вы будете знать сколько по времени должен быть открыт клапан.
Ардуино, которое заведует клапанами получает запрос на очередь и помещает его в массив. И отвечает, что запрос на очередь поставлен. Ардуино в комнате должно снять запрос. Когда после отработки очередной команды массив сдвигается вверх и из него берётся номер очередной комнаты. Делается запрос к Ардуино, которая стоит в комнате и та отвечает, сколько и каким клапаном лить.
Тогда Ардуино в комнате может накапливать сколько угодно команд(ограничено памятью). И после формирования команды снова отправлять запрос на очередь.
Как вам такая система?
Аватара пользователя
KeyArduino
Сержант
Сообщения: 130
Зарегистрирован: 21 июл 2019, 19:16
Имя: Дмитрий
Контактная информация:

Задачи в очередь

Сообщение KeyArduino »

edyapd писал(а): 03 ноя 2019, 18:06 Тут посидел, подумал. Наверное стоит сделать в каждой комнате по Ардуино, которое бы обрабатывало нажатия. При этом запрос в очередь выставляло бы только после того, как полностью сформирована команда (отпущена последняя кнопка). Только в таком случаи вы будете знать сколько по времени должен быть открыт клапан.
Ардуино, которое заведует клапанами получает запрос на очередь и помещает его в массив. И отвечает, что запрос на очередь поставлен. Ардуино в комнате должно снять запрос. Когда после отработки очередной команды массив сдвигается вверх и из него берётся номер очередной комнаты. Делается запрос к Ардуино, которая стоит в комнате и та отвечает, сколько и каким клапаном лить.
Тогда Ардуино в комнате может накапливать сколько угодно команд(ограничено памятью). И после формирования команды снова отправлять запрос на очередь.
Как вам такая система?
Да, истина где то рядом, спасибо за предложение, буду пробовать!
Всем участникам ветки плюсики в карму! И спасибо Вам большое!!!

Отправлено спустя 3 минуты 38 секунд:
Тему не закрываю до благополучного финала, буду пробовать, а там посмотрим что получится. Всем ещё раз спасибо!!! :smile9:
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Задачи в очередь

Сообщение rw6cm »

KeyArduino писал(а): 03 ноя 2019, 18:47 Да, истина где то рядом,
По ходу разрабатывается наливайка на три столика )
Win10-64, FLProg (portable)
Аватара пользователя
Rovki
Полковник
Сообщения: 5735
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Задачи в очередь

Сообщение Rovki »

[/quote]
По ходу разрабатывается наливайка на три столика )
[/quote]
на троих столик :smile171:
Электронщик до мозга костей и не только
Аватара пользователя
Dryundel
Полковник
Сообщения: 2457
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 6 раз
Поблагодарили: 31 раз

Задачи в очередь

Сообщение Dryundel »

Rovki писал(а): 03 ноя 2019, 19:32
По ходу разрабатывается наливайка на три столика )
на троих столик :smile171:
Столик на троих и три напитка. Коктейль будет у каждого свой.
:)
Аватара пользователя
Rovki
Полковник
Сообщения: 5735
Зарегистрирован: 22 апр 2016, 17:25
Откуда: Чехов
Имя: Анатолий
Благодарил (а): 68 раз
Поблагодарили: 222 раза
Контактная информация:

Задачи в очередь

Сообщение Rovki »

Удивил меня КлючкАрдуино ,что не смог сформулировать четко задачу ,как в своих видео уроках...
Электронщик до мозга костей и не только
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей