Передача массива ссылок на строки в конструктор класса
- Войдите на сайт для отправки комментариев
Ср, 25/10/2017 - 14:19
Добрый день!
Имеется массив ссылок на строки... необходимый для того чтобы хранить во flash памяти
char string_1[] PROGMEM = "String 1"; char string_2[] PROGMEM = "String 2"; char string_3[] PROGMEM = "String 3"; char string_4[] PROGMEM = "String 4"; char string_5[] PROGMEM = "String 5"; const char* string_table[] PROGMEM ={string_1,string_2,string_3,string_4,string_5};
Подскажите как передать ссылки на массив string_table в конструктор класса чтобы внутри класса была возможность получить доступ к этим строкам.
Пробовал множество вариантов, но работоспособного варианта не нашел.
Класс выглядит примерно так:
class test1{ public: test1(char *strTab[]); private: char *_pStrTab; }; test1::test(char *strTab[]){ _pStrTab = strTab; }; test1 obj (string_table);
видимо ты невнимательно читал про использование PROGMEM
про memcpy_P слышал?
Имеется массив ссылок на строки... необходимый для того чтобы хранить во flash памяти
Странно он (массив) у Вас описан. Неужели компилируется? Чем, интересно - что за IDE у Вас?
Я бы описал его так:
А передавать конструктору, так Вы описывайте параметр конструктора как положено - а именно точно так, как описана переменная, которую Вы собраись передавать. И будет Вам счастье.
Вот это пример печатает "String4" - вполне правильно по-моему
ЕвгенийП, все отлично компилируется и без приведения типов. IDE 1.6.12
И вообще мне кажется ваш код излишне сложным. В этом конструкторе указывать PROGMEM незачем, работает и так. Копировать строку в буфер, для того чтоб напечатать - зачем? Печатайте напрямую, в классе Serial есть готовый метод для строк во флеше.
так то работает, это ежу понятно.
я так понимаю человек желает съэкономить ОЗУ раз использует PROGMEM
так то работает, это ежу понятно.
я так понимаю человек желает съэкономить ОЗУ раз использует PROGMEM
Вы невнимательны. Строки для экономии ОЗУ остались в PROGMEM А массив ссылок занимает такие крохи, что никакого смысла класть его во флеш нет.
Добрый день! Да я действительно хотел разместить строки и ссылки на них во флешь память. Как я понимаю ссылки на каждую строку займет 2 байта минимум. в моем проекте 50 строк.
ЕвгенийП, спасибо Вам за замечания и код, это как раз то что мне нужно. Саписибо всем.
я даже меню всегда во флэш пхаю
Добрый день! Да я действительно хотел разместить строки и ссылки на них во флешь память. Как я понимаю ссылки на каждую строку займет 2 байта минимум. в моем проекте 50 строк.
ну если хотите, можете и таблицу ссылок разместить во флеше - остальной код не изменится.
В моей программе я как раз буду брать необходимы строки из флешь памяти в буффер и выводить на дисплей.
копировать в буфер необязательно