Как правильно передать в функцию указатель PGM_P на массив указателей на строки во флеше?
- Войдите на сайт для отправки комментариев
Что имею:
Сначала размещаю во флеше 3 строки, и там же во флеше создаю массив указателей на эти строки:
#include <avr/pgmspace.h> const char code_0[] PROGMEM = "string1"; const char code_1[] PROGMEM = "string2"; const char code_2[] PROGMEM = "string3"; PGM_P const codes_names[] PROGMEM = // массив указателей на строки { code_0 , code_1 , code_2 };
Далее, если не создавать функцию, а просто считывать строки из флеша например так:
char buff[30]; strcpy_P(buff, (PGM_P)pgm_read_word(&(codes_names[1])));
, вместо единицы подставляя 0,1 или 2 - все работает.
Сложность возникает при создании фунции...
Например такой:
void printCode (char _codes_names[], uint8_t code ){ char buff[30]; strcpy_P(buff, (PGM_P)pgm_read_word(&(_codes_names[code]))); Serial.println (buff); }
Ничего не получается... Есть сведующие люди способные помочь в этой проблеме начинающему ардуинщику? Задача в целом такая: передать в функцию данные из массива строк во флеше, далее, по указанному параметру (номер строки в массиве) вытащить данные (массив символов) и сравнить их с другим массивом чаров. Предвосхищая вопросы зачем это нужно - просто нужно и все. Хотелось бы не только кусок кода, но и хотя бы кратких пояснений.
Вот здесь усё разжёвано.
Вот здесь усё разжёвано.