у меня имеется котнтроллер ADAM-5510M. Надо чтобы в бесконечном цикле выполнялись куча алгоритмов, с другой стороны постоянно надо опрашивать DI ( входы к которым подключена клавиатура ) и если кто клацнет например кнопку СТОП надо моментально среагировать
Можно ли это организовать с помощью мульти потоков, есть ли Multithreading в библиотеках для ADAM5510? или недокументированное что-нибудь, Или как можно это сделать с помощью прерываний?
Плиз хелп!
Просто сделать опрос IO - одной из задач
С уважением, SAN
Первоначально опубликовано sanwork
Просто сделать опрос IO - одной из задач
С уважением, SAN
Просто у меня получаются циклы в циклах,
а проверять надо постоянно, что муторно.
Ладно, спасибо и на этом
Первоначально опубликовано sanwork
Просто сделать опрос IO - одной из задач
С уважением, SAN
Ладно, спасибо и на этом
Просто у меня получаются циклы в циклах,
а проверять входы надо постоянно, что муторно.
Циклы в циклах ? ...
Я ваще-то по другому представлял : один общий цикл обходит все задачи, и самое главное (!) - не на одной не застревает, а проходит каждую независимо от результата её выполнения. Если чо не сделал в текущем цикле - доделает в следующем и т.д.
Каждая задача состоит из нескольких шагов, и по мере выполнения, если шаг выполнен, переходит на следующий шаг в каждом цикле (или не переходит), может торчать на одном шагу (тогда используется счетчик) и т.д. и т.п...
И никакой возни с приоритетами и прочее. Такая схема задумана исключить всякие зависания. Простая - как "два байта отослать" !
Конечно есть и недостатки. Так, из-за отсутствия приоритетов все задачи вынуждены работать с одинаковой скоростью. Но, если подумать, то например, чтение вх/вых нет смысла делать чаще других задач, потому что результаты вх/вых нужны всем задачам !
Такой организацией я уже давно с успехом пользуюсь. Практика показала -
С уважением, SAN
В общем тебе нужно реализовать так называемую машину состояний (state machine).
ЗЫ: Почему то практически все программеры про нее забывают.
С уважением!
Первоначально опубликовано globus
В общем тебе нужно реализовать так называемую машину состояний (state machine).
ЗЫ: Почему то практически все программеры про нее забывают.
А что за машина состояний ? Я про нее не слышал
Первоначально опубликовано sanwork
Циклы в циклах ? ...
......
Такой организацией я уже давно с успехом пользуюсь. Практика показала -
С уважением, SAN
Лан спасиба
попробоую
[QUOTE=sanwork]
Циклы в циклах ? ...
Я ваще-то по другому представлял : один общий цикл обходит все задачи, и самое главное (!) - не на одной не застревает, а проходит каждую независимо от результата её выполнения. Если чо не сделал в текущем цикле - доделает в следующем и т.д.
Каждая задача состоит из нескольких шагов, и по мере выполнения, если шаг выполнен, переходит на следующий шаг в каждом цикле (или не переходит), может торчать на одном шагу (тогда используется счетчик) и т.д. и т.п...
вообще приколно, но
одну вещь я не понял:
если я выполнил 5 шагов задачи, 6-ой не прошел
при новом прохождении задачи как мне узнать что сразу на 6-ой шаг
записываь в переменные?
и в самой задаче проверки - если шаг равен 1, равен 2 и т.д.?
Так я понял
[/QUOTE] ... А что за машина состояний ? Я про нее не слышал ... [/QUOTE]
Чаще называют "команд-аппарат", и еще другие названия ..
Надо сказать, что этот механизм обладает широкими возможностями. Основное - одна задача может управлять любой другой. То-есть, если при выполнении процесса нужно вызваать какую-нибудь подзадачу то не надо делать "цикл-в-цикле", а просто нужная задача взводится в состояние активного выполнения. При этом все задачи и подзадачи выполняются на одном уровне, без всяких вложений ! Когда позадача выполнит все нужные шаги, то она переходит в состояние "выполнено", и при очередном обходе главного цикла диспетчер задач её больше не вызывает. Вот и всё !
Хоть я и говорил, что в этой многозадачной системе нет приоритетов в явном виде - функционально они есть ! Взаимное управление задачами - не что иное как гибкий механизм динамического формирования приоритетов. И при этом сохраняется предельная простота схемы, что спасает от ненужной путанницы !
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме