ViKo 1 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Коллега уже хорошо сказал про такие "рецепты": Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Типа "болит голова - ампутируем голову"? Я думаю, вы неверно цитируете коллегу по данному поводу. Массив упорядочивает реагирование на внешние сигналы. Например, у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Причем, в массиве есть указатели даже на несуществующие номера кнопок. На пустые функции. А когда понадобилось, добавляю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба о I/O менеджер работает в реальном времени и взаимодействует с физическим железом.... у нас вообще используется EtherCAT мастер с временем опроса в 100мкс. EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер. Все надо называть своими словами. Не, без сорсов вы только зря тратите время на объяснения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Укушенный воблой 0 6 января, 2017 Опубликовано 6 января, 2017 (изменено) · Жалоба В одном проекте у нас вообще используется EtherCAT Расскажите про EtherCAT А то мы в Москве перебрали СОТНИ организаций но так не нашли ни одного толкового спеца по этер кату. Скажите название Вашей организации? у меня так сделана работа с панелью управления прибором. Функции имеют названия, соответствующие органам управления. А указатели на них упорядочены в массиве, согласно номеру кнопки на панели. Это не универсальное решение и при том очень простой задачи. Это очередные "костыли". От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться Изменено 6 января, 2017 пользователем Укушенный воблой Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm37 0 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба "Буратино", всё таки предложу ещё раз посмотреть книжку Андрей Александреску "Современное проектирование на C++" и всё что с ней связано (у людей уже есть наработки в этой области - приводил выше), Прочитайте стр.17 (предисловие) - написано прямо то что вы хотите. книга Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Это не универсальное решение и при том очень простой задачи. Это очередные "костыли". От фундаментальной проблемы (наличие огромного числа "if..then..else" в сложных программах) это не помогает избавиться Универсальных решений не бывает. Я показал один из примеров. Условных выполнений у меня хватает, но я не вижу это проблемой. Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aiwa 0 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Т.е. Вы хотите спрятать логику (закодировав её в номерах функций), чтобы программу стала еще более не понятной и запутанной. Это по Вашему хорошее решение? Совершенно наоборот: кодирование логики в номерах функций в случае, когда switch/case-реализация становится запутанной хотя бы из-за ее размера. Недостатки лишь в издержках на вызов функций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба "Что-то аппаратное" есть во всех Cortex-M - MPU. Использую MPU в всех своих проектах на Cortex-M обязательно. А почему собственно его не использовать? Только предохранить какую-то конкретную переменную с помощью него конечно затруднительно. Зато при отладке MPU очень часто помогает. Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS? "Что-то аппаратное" есть во всех Cortex-M - MPU В M0 нету :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 87 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба А для чего нужны статьи я написал в КиТ №11 за 14 год. Они нужны не для того, чтобы все знали о том как писать программы для... А для того, чтобы получать приличную зарплату. Упс, интересно как мне повысят зарплату за статьи? Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Укушенный воблой 0 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Универсальных решений не бывает. Я показал один из примеров. Я и сказал. "Очередной костыль", а не решение Условных выполнений у меня хватает, но я не вижу это проблемой. "А слона-то он и не заметил"© Т.е. ФУНДАМЕНТАЛЬНУЮ проблему программирования Вы просто не заметили. вы молодец. Вопрос выбора есть всегда, иначе и программировать ничего не придется. То, что вы называете фундаментальной проблемой, на самом деле - реальность мироздания. "Щелкни кобылу в нос..." (с) На самом деле есть методы которые сокращают число IF-ов в программе, которые программист ЛИЧНО, "ручками" должен написать. Взять к примеру повяление ЯВУ в коце 40-х годов прошлого века. Если посмотреть число IF-ов в СИ программе и сгенерированном из неё машинном коде, то можно заметить, что число IF-ов при переходе от разработки программы в машинных кодах к разработке на ЯВУ число IF-ов сократилось как минимум на порядок. За счет чего? За счет того. Что компилятор БОЛЬШИНСТВО IF-ов генерит автоматически освобождая от этой тупой работы программиста. Т.е. чем выше уровень языка - тем меньше IF-ов нужно писать программисту для решения одной и той же достаточно сложной задачи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Недостатки лишь в издержках на вызов функций. Для этого функции инлайнятся, и/или макросы использовать. Причем макросы использовать по любому очень широко заменяя ими даже одиночные строчки и давая им осмысленные названия. Размеры switch уменьшаются, читабельность увеличивается. Из самого switch естественным образом выделяется большая функция изменения состояния автомата. В этой функции и отладка и все необходимые действия и установки по переходу В определенное состояние автомата. Количество обозреваемых строк уменьшается и увеличивается глобальная читабельность. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
syoma 1 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба EtherCAT это и есть коммуникация. А "I/O менеджер" это, как понимаю, у вас простой маппер. Все надо называть своими словами. Не, без сорсов вы только зря тратите время на объяснения. AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь, так как это ни как ни опенсоурс. Только могу сказать, что это работает, хотите верьте, хотите нет. EtherCAT отличается от остальных коммуникаций тем, что работает в real-time, поэтому он и часть I/O Менеджера, и не входит в менеджер коммуникаций. Ему также выделяется отдельный Ethernet порт, в то время как менеджер коммуникаций может реализовать различные протоколы на одном и том же порте. Раньше мы вместо EtherCAT использовали Profibus. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Упс, интересно как мне повысят зарплату за статьи? Но прочесть не получится: "Статьи последних номеров доступны только в печатном варианте. Вы можете приобрести свежие номера журнала «Компоненты и технологии» в свободной продаже или заказать в редакции. Извините за доставленные неудобства." Так за 2014 год же доступно все... И там все написано... Или могу по скайпу перебросить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 6 января, 2017 Опубликовано 6 января, 2017 · Жалоба Я думал, может в kinetis что-то "сбоку" прикрутили, дополнительно. А вы MPU используете "сами" или в составе тойже FreeRTOS?"сами" В M0 нету :laughing:Значит от M3 и выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба AlexandrY, сорцы высокопроизводительной системы с EtherCAT, VxWorks и прочими плюшками я выкладывать не собираюсь,... VxWorks есть в наших закромах, так что можете не выклывать раз такой жадный. А вот менеджер если он весь такой абстрактный и платформенно независимый могли бы выложить. Или хотя бы назвать его метрики типа количества строк, функций, модулей, файлов и проч. Но боюсь нет у вас никакого "менеджера", а есть набор функций и промежуточного софта, то что я назвал фреймворком. VxWorks вы уже назвали, там есть и файловая и TCP стек и USB и проч. Стоит это добро дикие деньги. Так что ваша "архитектура" совершенно не вписывается в контекст темы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 7 января, 2017 Опубликовано 7 января, 2017 · Жалоба Я с вариантами разберусь, вы уж разберитесь сначала а вы пож. не постите ерунду больше. ерунда == писать под восьмибитники Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться