Salve a tutti, sto preparando un progragramma per arduino UNO.
Nel codice devo compilare se sono definite certe costanti, quindi ho #define WIND se do definito WIND devo dichiarare delle variabili globali, quindi #ifdef WIND #endif con all'interno la dichiarazione delle variabili.
posto un pezzo di codice:
///definisce gestore
// #define WIND
// #define TIM
// #define TRE
// #define VODAFONE
//definisce se c'è FTP
#define FTP
//Definizione parametri Gestore
#ifdef WIND
char APN='internet.wind';
char CentroSMS='+393205858500';
#endif
#ifdef TIM
char APN='ibox.tim.it';
char CentroSMS='+393359609600';
#endif
#ifdef TRE
char APN='tre.it';
char CentroSMS='+391231223123';
#endif
#ifdef VODAFONE
char APN='mobile.vodafone.it';
char CentroSMS='+393492000300';
#endif
Se commento WIND, TIM, VODAFONE eTRE il compilatore non mi da errori, ma se decomento uno dei 4 il compilatore da un casino di errore all'interno della unzione setup.
Dove è l'errore?
grazie
Ciao, tralascio la parte burocratica della mancata presentazione 
Che errori ti da? A me compilando con la 1.6 non da errori, li da solo se decommento più di una define (ovviamente).
In ogni caso il codice scritto non è corretto, il tipo di dato char può ospitare un solo carattere ( http://arduino.cc/en/Reference/Char ) quindi devi rivedere come istanziare correttamente le variabili che ospitano i parametri di connessione definento un arry di char.
Ciao
erdirectoor:
Salve a tutti,
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento
erdirectoor:
Se commento WIND, TIM, VODAFONE eTRE il compilatore non mi da errori, ma se decomento uno dei 4 il compilatore da un casino di errore all'interno della unzione setup.
Dove è l'errore?
"char APN='ibox.tim.it';", e tutti gli altri, non è una assegnazione dato valida, o usi String, da evitare se possibile, oppure definisci un array di char e assegni i singoli elementi in questo modo:
char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0' };
Al posto di hello metti la tua stringa, l'ultimo elemento \0 serve per terminare l'arry di caratteri ed è obbligatorio metterlo.
erdirectoor:
Dove è l'errore?
Come detto anche da @fabpolli e @astro, le stringhe in C devi racchiuderle nei doppi apici e non singoli:
char APN[]="internet.wind";
nid69ita:
Come detto anche da @fabpolli e @astro, le stringhe in C devi racchiuderle nei doppi apici e non singoli:
char APN="internet.wind";
Ciao nid69ita,
non vorrei dire una cavolata ma non è un problema di apice singolo o doppio, è proprio la dichiarazione che è errata, non so se con i doppi apici il compilatore trasforma il tipo ma credo che la soluzione più pulita sia comunque quella di astrobeed
nid69ita:
Come detto anche da @fabpolli e @astro, le stringhe in C devi racchiuderle nei doppi apici e non singoli:
char APN="internet.wind";
Non è una dichiarazione valida, se scrivi char pippo per il compilatore è una variabile di tipo char a singolo byte e se gli assegni una stringa si arrabbia, al limite dovresti fare String pippo = "quellochetipare", però poi il tipo string porta problemi di conversione in *char.
La dichiarazione corretta, vale solo in fase di creazione della variabile, è quella che ho postato io, se devi modificare un arry di char o usi le apposite funzioni oppure devi scrivere i singoli elementi uno per uno, che poi è quello che le funzioni di libreria per la manipolazione degli array di char.
fabpolli:
Ciao nid69ita,
non vorrei dire una cavolata ma non è un problema di apice singolo o doppio, è proprio la dichiarazione che è errata, non so se con i doppi apici il compilatore trasforma il tipo ma credo che la soluzione più pulita sia comunque quella di astrobeed
Sorry, errore mio, ho dimenticato le parentesi quadre:
char APN[]="internet.wind";
@astro, mica devi passare ogni singolo char, come ho scritto qui sopra, lo accetta e mette in automatico il fine stringa '\0'. Che poi equivale a dichiararlo con un pointer:
char *APN="internet.wind";