Проблема работы блока Меню при большом обьеме скетча

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
support
Супермодератор
Сообщения: 1917
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Поблагодарили: 23 раза
Контактная информация:

Проблема работы блока Меню при большом обьеме скетча

Сообщение support »

Почему? Эти строки как раз в глобальных переменных сейчас и лежат. В массивах.
Автор программы FLProg.
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

Проблема работы блока Меню при большом обьеме скетча

Сообщение nalnik »

А ключевое слово - в глобальных переменных сейчас и лежат.
Последний раз редактировалось nalnik 03 ноя 2016, 21:59, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

Проблема работы блока Меню при большом обьеме скетча

Сообщение Dev1 »

nalnik писал(а):Dev1На глобальные переменные это не влияет.
Предложи еще иероглифы
Выложи что сам написал - обсудим.
Файл для проверки https://yadi.sk/d/lDWvG_GDxuEFE
Исходный вариант без изменений:

Скетч использует 12 978 байт (40 памяти устройства. Всего доступно 32 256 байт.
Глобальные переменные используют 1 881 байт (91 динамической памяти, оставляя 167 байт для локальных переменных. Максимум: 2 048 байт.
Недостаточно памяти, программа может работать нестабильно.

Мой вариант для проверки глобальной памяти где все надписи приведены к названиям меню по дефолту М-1, М-1.1, М-1.1.1 и т.д, удалены все лишние записи дополнительных строк и строка на выходе "val":

Скетч использует 11 968 байт (37 памяти устройства. Всего доступно 32 256 байт.
Глобальные переменные используют 1 411 байт (68 динамической памяти, оставляя 637 байт для локальных переменных. Максимум: 2 048 байт.

Памяти хватает.
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

Проблема работы блока Меню при большом обьеме скетча

Сообщение nalnik »

Dev1
Что то Вы поздно проснулись.
Так и на фиг мне такое меню,
м-1-2
м-2-3
и что там сэкономил один и четыре килобайта
на одно подменю не хватит - а и где сама программа ?
И ваще - молчим и ждем ответа от support
Последний раз редактировалось nalnik 03 ноя 2016, 22:54, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.
Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24 окт 2016, 13:47

Проблема работы блока Меню при большом обьеме скетча

Сообщение Lazary »

Dev1, Спасибо за предложения, но уменьшая размер текста и даже удаления всех дополнительных строк проблему не решит, я сократил по мин текст и удалил все дополнительные строки, скетч загрузился но меню не работает, так как размер глобальных
переменных все равно слишком велик.
Изображение

Добавлено (03.11.2016, 23:15)
---------------------------------------------
И все же я немного недопонимаю, почему оно не работает если еще остается память для глобальных переменных, достигая 60% памяти глобальных переменных все не работает а остальные 40% для чего ?
Аватара пользователя
nalnik
Подполковник
Сообщения: 1320
Зарегистрирован: 14 май 2016, 17:12
Откуда: Кисловодск
Имя: Александр

Проблема работы блока Меню при большом обьеме скетча

Сообщение nalnik »

Lazary
В текстах удали - не определенные стоки
строк не должно быть больше двух - у тебя есть заполненная строка и две не определенных - крайнею удали
проверь
Последний раз редактировалось nalnik 03 ноя 2016, 23:22, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.
Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24 окт 2016, 13:47

Проблема работы блока Меню при большом обьеме скетча

Сообщение Lazary »

nalnik, Я вообще удалил все строки которые боли, все доп стрелочки и пробелы, обьем уменьшился да, но все же это не совсем решение так как все равно остается ограничение на обьем памяти переменных, много пунктов меню с под меню не сделать
Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06 сен 2015, 16:56
Откуда: Новосибирск

Проблема работы блока Меню при большом обьеме скетча

Сообщение Слимпер »

support писал(а):Основное место в переменных занимают строки текста. Остальное мелочи(в большинстве своём булеановские или байты). Естественно избавится полностью от строк не получится( что то выводиться же должно) но я по стараюсь перенести их в память программы (PROGMEM) которой заметно больше. Пока разбираюсь с этим. Это не так просто.
Приветствую Сергей.
Может и так знаете, но есть такая форма записи
Serial.println(F("This string will be stored in flash memory")); вот тут подробнее
Но это косается только передачи в Com-порт
Ну и как я понял,  про Ключевое слово PROGMEM вы тоже уже знаете.

Добавлено (04.11.2016, 10:31)
---------------------------------------------

Попробовал перенести в массивы строк в память на основе приведенной выше статьи, получается.

сгенерирвал меню из трех пунктов затем заменил часть кода  в IDE

String _menuItemsNameArray[3] = {"Menu1", "QQQQQQ", "NEEE"};

Заменил на

[spoiler=Спойлер]const char string_0[] PROGMEM = "Menu1"; // "String 0" и т.д. - это содержимое строк; если необходимо меняйте его

const char string_1[] PROGMEM = "QQQQQQ";

const char string_2[] PROGMEM = "NEEE";

// Теперь создаем таблицу с отсылками к этим строкам:

const char* const string_table[] PROGMEM = {string_0, string_1, string_2};

char buffer[20]; // массив был достаточно велик, чтобы вместить даже самую большую строку[/spoiler]

ниже нашел строку

_MenuBlock_396801281_MNO = _menuItemsNameArray[((_MainMenus[0].currentItem ).menuNameIndex - 1)];

заменил таким кодом:

strcpy_P(buffer, (char*)pgm_read_word(&(string_table[((_MainMenus[0].currentItem ).menuNameIndex - 1)])));
_MenuBlock_396801281_MNO= String (buffer);
Последний раз редактировалось Слимпер 04 ноя 2016, 10:34, всего редактировалось 1 раз.
Аватара пользователя
support
Супермодератор
Сообщения: 1917
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Поблагодарили: 23 раза
Контактная информация:

Проблема работы блока Меню при большом обьеме скетча

Сообщение support »

Ну примерно это я и делаю. Первые успехи уже есть.  Но ещё работаю.

Изображение
Автор программы FLProg.
Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24 окт 2016, 13:47

Проблема работы блока Меню при большом обьеме скетча

Сообщение Lazary »

support, Вы мне потом объясните как все сделать чтобы заработало как нужно, прошу объяснить подробно как для человека который в коде не чего не понимает, мои познания программирования для ардуино только в FLProg. Спасибо!
Аватара пользователя
support
Супермодератор
Сообщения: 1917
Зарегистрирован: 03 янв 2018, 11:45
Откуда: Астрахань
Имя: Сергей
Поблагодарили: 23 раза
Контактная информация:

Проблема работы блока Меню при большом обьеме скетча

Сообщение support »

Подождите немного. Я как раз сейчас работаю. Ничего делать не надо, я переделываю компилятор в FLProg. Вроде получается. На текущий момент при стандартной компиляции проекта на вашем проекте ситуация такая.
Изображение

И это при 40!!! пунктах меню. Честно говоря очень много.
Автор программы FLProg.
Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24 окт 2016, 13:47

Проблема работы блока Меню при большом обьеме скетча

Сообщение Lazary »

support, Спасибо большое за помощь, результаты просто замечательные, ждем конечного результата, держите по возможности нас в курсе как все продвигается.

Добавлено (17.11.2016, 17:22)
---------------------------------------------
support, Здравствуйте, можно поинтересоваться как проходят успехи с решением данной проблемы ? На когда примерно ожидать конечные результаты, чтобы хоть примерно ориентироваться по срокам сколько ожидать. Спасибо!
Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06 сен 2015, 16:56
Откуда: Новосибирск

Проблема работы блока Меню при большом обьеме скетча

Сообщение Слимпер »

Lazary писал(а):Здравствуйте, можно поинтересоваться как проходят успехи с решением данной проблемы ? На когда примерно ожидать конечные результаты, чтобы хоть примерно ориентироваться по срокам сколько ожидать. Спасибо!
Так уже вышла версия 2.1.1  в которой это уже решено.
Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24 окт 2016, 13:47

Проблема работы блока Меню при большом обьеме скетча

Сообщение Lazary »

Слимпер, Спасибо за подсказку, не заметил вовремя что уже вышла новая версия
Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

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