J'ai toujours du mal à faire fonctionner ce code correctement. Mon but est de montrer les chaînes qui sont placées dans PROGMEM sur un écran LCD. Le tableau avec des pointeurs vers ces chaînes se trouve également dans PROGMEM. La fonction est appelée avec une variable qui à son tour est traduite en un numéro d'index pour lire le tableau. Ofcourse pgmspace.h est inclus dans le code.Tableau dans Progmem mauvais indice?
Les erreurs que je continue à recevoir sont: souscript de tableau est de type « char » [-Wchar-] indices - initialisation un entier en pointeur sans cast [activé par défaut]
quelqu'un pourrait-il indiquer ce que je J'ai manqué ici? Travaillant sur le code pour AVR GCC, mon IDE est Eclipse.
const char wf0[] PROGMEM= "OFF ";
const char wf1[] PROGMEM= "SIN ";
const char wf2[] PROGMEM= "TRI ";
const char wf3[] PROGMEM= "S+T ";
const char wf4[] PROGMEM= "PUL ";
const char wf5[] PROGMEM= "P+S ";
const char wf6[] PROGMEM= "P+T ";
const char wf7[] PROGMEM= "P+ST";
const char wf8[] PROGMEM= "NOI ";
const char wf9[] PROGMEM= "N+S ";
const char wf10[] PROGMEM= "N+T ";
const char wf11[] PROGMEM= "NST ";
const char wf12[] PROGMEM= "N+P ";
const char wf13[] PROGMEM= "NPS ";
const char wf14[] PROGMEM= "NPT ";
const char wf15[] PROGMEM= "NPTS";
const char * const arrayWaveform[] PROGMEM= {wf0,wf1,wf2,wf3,wf4,wf5,wf6,wf7,wf8,wf9,wf10,wf11,wf12,wf13,wf14,wf15};
...
void showWaveform (char ctrlValue)
{
char hex = (ctrlValue & 0xf0)>>4;
char tempText[4];
char* data = pgm_read_byte(&arrayWaveform[hex]); // <<shows up both errors here
strcpy_P (tempText, data);
for (char x=0;x<4;x++)
{
char2LCD(tempText[x]); // <<shows up error: array subscript has type 'char'
}
}
Je vérifie votre code. Merci d'avoir signalé des choses. Quelques modifications mineures apportées (temptext et tempText, en initialisant * pstr = 0).Il compile bien, mais donne toujours des résultats étranges. Cela n'a peut-être rien à voir avec votre code, mais peut-être que quelque part ailleurs dans mon code, un autre problème est toujours à portée de main. Ce bit place également des données dans progmem mais ne compile pas correctement. Probablement la même erreur. Je vais regarder ça demain. Merci pour maintenant! – user2371490
Mon mauvais: j'ai oublié le '&' avant pstr dans l'appel à 'memcpy_P'. C'est parce que memcpy_P va charger un pointeur vers PROGMEM, donc je dois passer l'adresse de l'endroit où je veux que le pointeur soit chargé, c'est-à-dire un pointeur vers un char *. – CAFxX