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

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 790
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#41

Сообщение support » 03.11.2016{, 21:51}

Почему? Эти строки как раз в глобальных переменных сейчас и лежат. В массивах.
Автор программы FLProg.

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

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

#42

Сообщение nalnik » 03.11.2016{, 21:59}

А ключевое слово - в глобальных переменных сейчас и лежат.
Последний раз редактировалось nalnik 03.11.2016{, 21:59}, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

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

#43

Сообщение Dev1 » 03.11.2016{, 22:24}

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 v7.5.2 Portable :fie:

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

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

#44

Сообщение nalnik » 03.11.2016{, 22:46}

Dev1
Что то Вы поздно проснулись.
Так и на фиг мне такое меню,
м-1-2
м-2-3
и что там сэкономил один и четыре килобайта
на одно подменю не хватит - а и где сама программа ?
И ваще - молчим и ждем ответа от support
Последний раз редактировалось nalnik 03.11.2016{, 22:54}, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.

Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24.10.2016{, 13:47}
Репутация: 0

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

#45

Сообщение Lazary » 03.11.2016{, 23:15}

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

Добавлено (03.11.2016, 23:15)
---------------------------------------------
И все же я немного недопонимаю, почему оно не работает если еще остается память для глобальных переменных, достигая 60% памяти глобальных переменных все не работает а остальные 40% для чего ?

Аватара пользователя
nalnik
Подполковник
Сообщения: 1324
Зарегистрирован: 14.05.2016{, 17:12}
Репутация: 100
Откуда: Кисловодск
Имя: Александр

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

#46

Сообщение nalnik » 03.11.2016{, 23:21}

Lazary
В текстах удали - не определенные стоки
строк не должно быть больше двух - у тебя есть заполненная строка и две не определенных - крайнею удали
проверь
Последний раз редактировалось nalnik 03.11.2016{, 23:22}, всего редактировалось 1 раз.
Я хочу быть добрее, но люди сами нарываются.

Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24.10.2016{, 13:47}
Репутация: 0

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

#47

Сообщение Lazary » 03.11.2016{, 23:47}

nalnik, Я вообще удалил все строки которые боли, все доп стрелочки и пробелы, обьем уменьшился да, но все же это не совсем решение так как все равно остается ограничение на обьем памяти переменных, много пунктов меню с под меню не сделать

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

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

#48

Сообщение Слимпер » 04.11.2016{, 10:31}

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"};

Заменил на
СпойлерПоказать
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]; // массив был достаточно велик, чтобы вместить даже самую большую строку
ниже нашел строку

_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.11.2016{, 10:34}, всего редактировалось 1 раз.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 790
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#49

Сообщение support » 04.11.2016{, 15:20}

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

Изображение
Автор программы FLProg.

Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24.10.2016{, 13:47}
Репутация: 0

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

#50

Сообщение Lazary » 04.11.2016{, 16:18}

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

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 790
Откуда: Астрахань
Имя: Сергей
Контактная информация:

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

#51

Сообщение support » 06.11.2016{, 11:39}

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

И это при 40!!! пунктах меню. Честно говоря очень много.
Автор программы FLProg.

Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24.10.2016{, 13:47}
Репутация: 0

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

#52

Сообщение Lazary » 17.11.2016{, 17:22}

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

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

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

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

#53

Сообщение Слимпер » 17.11.2016{, 17:57}

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

Lazary
Рядовой
Сообщения: 21
Зарегистрирован: 24.10.2016{, 13:47}
Репутация: 0

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

#54

Сообщение Lazary » 12.12.2016{, 19:14}

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

Ответить

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