Например TDA7294

Форум РадиоКот • Просмотр темы - Как поместить цикл в case оператора switch
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 12, 2025 19:57:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 252 ]     ... , , , , 13
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Пн ноя 28, 2022 12:48:10 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Ха, а вот если действительно хотите прикольную фичу, тогда используйте возможности конструктора класса в С++, поместив в него код инициализации этих ваших входов, выходов или еще чего. И тогда при создании экземпляра класса код инициализации выполнится автоматически. Если объект поместите в глобальную область видимости, то код инициализации будет выполнен еще до входа в main, в точке создания статических конструкторов. Так что вы даже и не увидите инита и уж точно не забудете его сделать :) Конечно, если не забудете написать конструктор класса.
Конструктор класса в этом смысле аналогичен case 0 в показанном примере.
Хотя идеология С++ довольно сильно переворачивает прежние привычки от Си.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Пн ноя 28, 2022 13:49:36 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Исходим из того, что имеем на руках сейчас.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Пн ноя 28, 2022 14:31:51 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15285
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Для адуринок конструктор класса и блок инициализации как бы "стандартные" элементы программы(именуемой СКОТчем)...
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Пн ноя 28, 2022 18:31:21 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Я совсем не знаток Ардуины, но то, что приходилось видеть мало похоже на то, за что я соппсна имею вам сказать :) Видел я в основном статические методы или же пресловутый setup() для нужд инита. Я же говорю именно о конструкторе класса, вот так:
Код:
class Keyboard{
public:
  Keyboad() {/* ТУТ инициализация */ }

при этом вложенные и/или наследованные классы так же будут вызывать свои конструкторы в обратном порядке (начиная с самого глубокого по иерархии) и инициализовывать всё вплоть до входных пинов от одного только создания объедка клавы.
Это как бы к вопросу "автоматической инициализации чтобы не забыть".
И если в С++ это реализовано достаточно автоматически, то перенос такого поведения на обычный Си неудобен и требует частой копипасты. Точно так же можно забыть написать инкремент переменной в switch после инита или промахнуться с циферкой в case,


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 11:56:13 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2556
Рейтинг сообщения: 0
Инициализация железа в конструкторах глобальных объектов плохая практика. Последовательность вызова таких конструкторов не определена, а для железа это важно. Это одна из возможностей плюсов, которой в эмбедде не надо пользоваться. Лучше сделать метод Init() и вызывать ровно в тот момент когда требуется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 12:11:20 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15285
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У ардуино IDE вызов конструкторов билиотек обязателен в setup разделе скотча.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 12:30:49 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2556
Рейтинг сообщения: 0
Что-то у вас смешались в кучу...
- ардуино IDE. Это всего лишь инструмент разработки. Ей должно быть фиолетово на конструкторы классов.
- конструкторы библиотек. Это что за зверь? Как это связано с конструторами классов?
- setup раздел. Что это и когда выполняется? Как связан с конструкторами классов?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 14:04:02 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15285
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ардуино IDE лишь оболочка, но со своими правилами
конструктор, используемый для дальнейшего применения библиотеки (без него библиотека неработоспособна)
сами библиотеки в большинстве случаев содержат описания классов - как уж "по ученому" это обозвать... но есть факт.
"ученые КОТЫ" самой IDE и ее использованию пока что весьма мало внимания уделяли (в отличии от классических сред/компиляторов типа авр студио, GCC или мплаба) так что... даже правила самостоятельного написания прикладных библиотечек там приходится "изобретать" - тем более, что возможно применение и "смешанного варианта" из дополнительных файлов в самой папке проекта как в Си так и в С++ стиле, правда с обрамлением в дополнительные шаблоны(опять же особенности IDE)...
у так называемого скотча два раздела(функции) - один выполняемый однократно имеет название setup, другой - аналог Сишного main, именуется loop
Собственно смотрим устройство и работу с данной IDE. Там помимо явно видимого пользователем еще кучка скрытых добавок используется.
:roll:


Последний раз редактировалось BOB51 Вт ноя 29, 2022 14:19:29, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 14:16:12 
Мудрый кот

Карма: 25
Рейтинг сообщений: 485
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1785
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
В Arduino IDE пишите как в Amtel Studio. Компилируется, работает на 100%.
Это просто свободный IDE и компилятор, с возможностями того, из чего оно получено.
(Кое-где со своей особенности: конструкцией, именами функций и операндами).


Вложения:
Untitled-1.jpg [89.94 KiB]
Скачиваний: 34
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 14:30:57 
Опытный кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 164
Зарегистрирован: Ср авг 03, 2022 05:22:56
Сообщений: 848
Рейтинг сообщения: 0
Мы здесь имеем ввиду понятие "конструктор класса в языке С++", который представляет собой функцию, записанную с тем же именем, что и класс, и вызываемый программным кодом автоматически в момент создания экземпляра класса. Если конструктор явно не прописан, то вызовется дефолтный скрытый конструктор. Конструктор класса чаще всего используется для инициализации переменных класса, ну и для некоторых других действий типа выделения памяти из кучи для нужд объекта. А иногда можно инициализовать и железо. Правда, как заметилVladislavS, это не всегда может давать правильный результат.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 14:33:25 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15285
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
veso74
Это если проект только одним файлом ограничивается.
А вот если добавлять свои с выносом туда отдельной части и/или пытаться сделать тот же драйверок к "нестандартному" дисплейчику (или какой "умной микросхеме периферии") вот там и начинаются "мелочи", которые в имеющейся ширпотреб. литературе практически не разжевывались.
С учетом того, что практически все примеры для С++ в литературе даны под работу с ПК, а не с МК... довольно печальная ситуация получается. Оттуда и недооценка данной IDE и ее возможностей.
Пока что самостоятельно "учебны эксперименты" делать приходится для проверки всех возможных правил и особенностей работы с адуринками (те же "учебные игрушки" из viewtopic.php?p=4261084#p4261084 и viewtopic.php?p=4267316#p4267316 к примеру)...
:sleep:
Но это уже тематика моей КОТУИНКИ, а не данного раздела - будет интерес обсудить - топаем туда.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как поместить цикл в case оператора switch
СообщениеДобавлено: Вт ноя 29, 2022 14:41:33 
Мудрый кот

Карма: 25
Рейтинг сообщений: 485
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1785
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Проекты с полу-чужим кодом всегда обречены на детальную переделку. Запросы: код лучше быть универсальным, не хотим сами его писать (нет на это времени), код должен занимать мало места в памяти, а расчет должен быть быстрым ... все противоречивые вещи.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 252 ]     ... , , , , 13

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y