-
- Почему извратиться? Наоборот, самый прямой путь - для чего это всё
в С++ и придумано. Ну вот вам другой канонический пример: Samx(402 знак., 19.05.2024 20:34)
- это другое:) вот возьмите дуину - там есть setup и loop. это похоже
на старт (с какой-то инициализацией и т.п.) и бесконечный процесс,
который по сути таки перезапускаемый набор операций. так вот у
процесса с идеологией run-to-complete (см. Quantum Leaps), т.е.
конечный автомат (finite state machine), котрый торчит из вашего
doStep() есть множество сходных названий, и, КМК, это скорее задача
(task). вы соорудили примитивный диспетчер, но собственно задачи
запихали по-глубже Vit(1204 знак., 19.05.2024 21:19)
- Ну да, я же так и сказал - всё, что на C++ делается просто и
прозрачно, можно сделать руками на C, и при этом не получить
ничего, кроме потерянного времени. Samx(106 знак., 20.05.2024 01:27)
- я вам объяснил, почему считаю конкретный случай извратом, в котором ещё и сами плюсы притянуты за уши, делая код абсолютно непрозрачным. вместо сервиса-спулера вы рожаете негибкое решение в виде массива с удивительными глубинами. насчет больше и дольше - ваши фантазии. вопрос не по примененному языку, а по архитектуре - там где-то в консерватории бардак. и звените - Vit(20.05.2024 10:06)
- Ну да, я же так и сказал - всё, что на C++ делается просто и
прозрачно, можно сделать руками на C, и при этом не получить
ничего, кроме потерянного времени. Samx(106 знак., 20.05.2024 01:27)
- Т.е ужэ имея готовый набор функций 1-вире, вместо
sendByte1Wire(data), вы (условно) пользуете SendByteIIC(data)?
Нахуя, а главное, зачем? - mse homjak(19.05.2024 20:54)
- Наоборот - уже имея отлаженный код работы с I2C-датчиком, я просто
заменяю обращение к члену класса TI2CSoft на обращение к его
наследнику TI2CSoftBy1wire Samx(283 знак., 20.05.2024 12:13)
- Это понятно. Просто вам полюбому нужно всё написать ручками. Только
у условного меня, на Ц, будет либо переназначение дефайнов, либо
просто две функции, где это уже будет сделано прям в коде. - mse homjak(20.05.2024 12:45)
- Да, и в каждый вызов функции нужно будет явно передавать структуру
с переменными состояния. Датчиков то несколько десятков. И для чего
этот геморрой? Samx(117 знак., 20.05.2024 13:04)
- Да я, собсно, не против. mse homjak(665 знак., 23.05.2024 22:22)
- Да, и в каждый вызов функции нужно будет явно передавать структуру
с переменными состояния. Датчиков то несколько десятков. И для чего
этот геморрой? Samx(117 знак., 20.05.2024 13:04)
- Это понятно. Просто вам полюбому нужно всё написать ручками. Только
у условного меня, на Ц, будет либо переназначение дефайнов, либо
просто две функции, где это уже будет сделано прям в коде. - mse homjak(20.05.2024 12:45)
- Возможно, вы не поняли. В этом случае, через существующую линию
1wire, на дальнем конце, с помощью расширителя портов 1wire,
реализован I2C для опроса удалённого I2C-устройства через имеющуюся 1wire-сеть. - Nikolay_Po(19.05.2024 21:06)
- Это, как раз, понятно. Я не детализированно обозвал функции. типа
setStartIIC() и setStart1wire(). Ну и набор вверх до записи-чтения.
Т.е. это всё уже должно быть написано. Но вызов сделан не как
написал я выше, а как принято в ЦПП. Дажэ не так mse homjak(578 знак., 19.05.2024 21:33 - 20.05.2024 12:48)
- Как-то делал девайс с несколькими SPI на STM, ну и в нём заюзал
LWIP. Его отлаживать без дебажного выхлопа неинтересно было, ну и
пришлось заюзать ногу SWO, а оно пересекалось с одним из SPI и
подходящих свободных не было. Сделал SPI ногодрыгом, но выделил
указатель SPI-ного типа на какую-то левую память для SPIn и не
менял API и уже написанный код. - Vit(19.05.2024 22:01)
- Так в том и дело, заработало и хрен с ним. Эти механизьмы дают лютый выхлоп в некой стандартной среде, на неком стандартном оборудовании. Причом, чтобы низкий уровень ужэ кто-то написал. Тогда, да, пусть лошадь думает, у неё голова большая. А так, автоматика: нажал на кнопку, мешок на спине. Нажал другую, спина в мыле. Ну, мож кому-то, действительно, помогает, ХЗ. - mse homjak(19.05.2024 22:02)
- Как-то делал девайс с несколькими SPI на STM, ну и в нём заюзал
LWIP. Его отлаживать без дебажного выхлопа неинтересно было, ну и
пришлось заюзать ногу SWO, а оно пересекалось с одним из SPI и
подходящих свободных не было. Сделал SPI ногодрыгом, но выделил
указатель SPI-ного типа на какую-то левую память для SPIn и не
менял API и уже написанный код. - Vit(19.05.2024 22:01)
- Это, как раз, понятно. Я не детализированно обозвал функции. типа
setStartIIC() и setStart1wire(). Ну и набор вверх до записи-чтения.
Т.е. это всё уже должно быть написано. Но вызов сделан не как
написал я выше, а как принято в ЦПП. Дажэ не так mse homjak(578 знак., 19.05.2024 21:33 - 20.05.2024 12:48)
- Наоборот - уже имея отлаженный код работы с I2C-датчиком, я просто
заменяю обращение к члену класса TI2CSoft на обращение к его
наследнику TI2CSoftBy1wire Samx(283 знак., 20.05.2024 12:13)
- это другое:) вот возьмите дуину - там есть setup и loop. это похоже
на старт (с какой-то инициализацией и т.п.) и бесконечный процесс,
который по сути таки перезапускаемый набор операций. так вот у
процесса с идеологией run-to-complete (см. Quantum Leaps), т.е.
конечный автомат (finite state machine), котрый торчит из вашего
doStep() есть множество сходных названий, и, КМК, это скорее задача
(task). вы соорудили примитивный диспетчер, но собственно задачи
запихали по-глубже Vit(1204 знак., 19.05.2024 21:19)
- Спасибо. Я уже было подумал что сам свихнулся :) - Cкpипaч(19.05.2024 09:52)
- Почему извратиться? Наоборот, самый прямой путь - для чего это всё
в С++ и придумано. Ну вот вам другой канонический пример: Samx(402 знак., 19.05.2024 20:34)