Перейти к содержанию
    

Коллега уже хорошо сказал про такие "рецепты":

Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной.

Это по Вашему хорошее решение?

Типа "болит голова - ампутируем голову"?

Я думаю, вы неверно цитируете коллегу по данному поводу.

Массив упорядочивает реагирование на внешние сигналы.

Например, у меня так сделана работа с панелью управления прибором.

Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Причем, в массиве есть указатели даже на несуществующие номера кнопок. На пустые функции. А когда понадобилось, добавляю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

о I/O менеджер работает в реальном времени и взаимодействует с физическим железом.... у нас вообще используется EtherCAT мастер с временем опроса в 100мкс.

 

EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер.

Все надо называть своими словами.

 

Не, без сорсов вы только зря тратите время на объяснения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В одном проекте у нас вообще используется EtherCAT

Расскажите про EtherCAT

 

А то мы в Москве перебрали СОТНИ организаций но так не нашли ни одного толкового спеца по этер кату.

 

Скажите название Вашей организации?

 

у меня так сделана работа с панелью управления прибором.

Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели.

Это не универсальное решение и при том очень простой задачи. Это очередные "костыли".

От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться

Изменено пользователем Укушенный воблой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Буратино", всё таки предложу ещё раз посмотреть книжку Андрей Александреску "Современное проектирование на C++" и всё что с ней связано (у людей уже есть наработки в этой области - приводил выше),

Прочитайте стр.17 (предисловие) - написано прямо то что вы хотите.

книга

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это не универсальное решение и при том очень простой задачи. Это очередные "костыли".

От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться

Универсальных решений не бывает. Я показал один из примеров. Условных выполнений у меня хватает, но я не вижу это проблемой. Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной.

Это по Вашему хорошее решение?

Совершенно наоборот: кодирование логики в номерах функций в случае, когда switch/case-реализация становится запутанной хотя бы из-за ее размера.

Недостатки лишь в издержках на вызов функций.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"Что-то аппаратное" есть во всех Cortex-M - MPU. Использую MPU в всех своих проектах на Cortex-M обязательно. А почему собственно его не использовать?

Только предохранить какую-то конкретную переменную с помощью него конечно затруднительно. Зато при отладке MPU очень часто помогает.

Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS?

 

"Что-то аппаратное" есть во всех Cortex-M - MPU

В M0 нету :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А для чего нужны статьи я написал в КиТ №11 за 14 год. Они нужны не для того, чтобы все знали о том как писать программы для... А для того, чтобы получать приличную зарплату.

Упс, интересно как мне повысят зарплату за статьи?

Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства."

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Универсальных решений не бывает. Я показал один из примеров.

Я и сказал. "Очередной костыль", а не решение

 

Условных выполнений у меня хватает, но я не вижу это проблемой.

"А слона-то он и не заметил"©

Т.е. ФУНДАМЕНТАЛЬНУЮ проблему программирования Вы просто не заметили.

вы молодец.

 

Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с)

На самом деле есть методы которые сокращают число IF-ов в программе, которые программист ЛИЧНО, "ручками" должен написать.

Взять к примеру повяление ЯВУ в коце 40-х годов прошлого века.

Если посмотреть число IF-ов в СИ программе и сгенерированном из неё машинном коде, то можно заметить, что число IF-ов при переходе от разработки программы в машинных кодах к разработке на ЯВУ число IF-ов сократилось как минимум на порядок.

За счет чего?

За счет того.

Что компилятор БОЛЬШИНСТВО IF-ов генерит автоматически освобождая от этой тупой работы программиста.

 

Т.е. чем выше уровень языка - тем меньше IF-ов нужно писать программисту для решения одной и той же достаточно сложной задачи.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недостатки лишь в издержках на вызов функций.

Для этого функции инлайнятся, и/или макросы использовать. Причем макросы использовать по любому очень широко заменяя ими даже одиночные строчки и давая им осмысленные названия. Размеры switch уменьшаются, читабельность увеличивается. Из самого switch естественным образом выделяется большая функция изменения состояния автомата. В этой функции и отладка и все необходимые действия и установки по переходу В определенное состояние автомата. Количество обозреваемых строк уменьшается и увеличивается глобальная читабельность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер.

Все надо называть своими словами.

Не, без сорсов вы только зря тратите время на объяснения.

AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь, так как это ни как ни опенсоурс. Только могу сказать, что это работает, хотите верьте, хотите нет.

EtherCAT отличается от остальных коммуникаций тем, что работает в real-time, поэтому он и часть I/O Менеджера, и не входит в менеджер коммуникаций. Ему также выделяется отдельный Ethernet порт, в то время как менеджер коммуникаций может реализовать различные протоколы на одном и том же порте. Раньше мы вместо EtherCAT использовали Profibus.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Упс, интересно как мне повысят зарплату за статьи?

Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства."

Так за 2014 год же доступно все... И там все написано...

Или могу по скайпу перебросить...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS?
"сами"

 

В M0 нету :laughing:
Значит от M3 и выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь,...

 

VxWorks есть в наших закромах, так что можете не выклывать раз такой жадный.

 

А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить.

Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч.

 

Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком.

VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги.

 

Так что ваша "архитектура" совершенно не вписывается в контекст темы

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я с вариантами разберусь,

вы уж разберитесь сначала

 

а вы пож. не постите ерунду больше.

ерунда == писать под восьмибитники

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...