Go Down

Topic: SmartStrip - Controllo prese elettriche da web (Read 4511 times) previous topic - next topic

SukkoPera

Uhm... "sketch_nov27a" mi fa pensare che tu abbia scaricato un file solo invece dell'intero repository, è così?

pablos

Ho messo lo sketch nella cartella con le librerie, magari devo rivedere l'installazione di tutte quelle lib se sono al posto giusto. però a parte tutto quello che mi interessa del tuo progetto è solo questo

Code: [Select]

static var_substitution subDateVarSub PROGMEM = {subDateStr, evaluate_date, NULL};
static var_substitution subTimeVarSub PROGMEM = {subTimeStr, evaluate_time, NULL};
...

static var_substitution *substitutions[] PROGMEM = {
&subDateVarSub,
&subTimeVarSub,
...
...


questo non l'ho mai visto, cosa fa sostituisce i caratteri nelle stringhe del PROGMEM?
no comment

SukkoPera

#17
Nov 27, 2012, 12:05 pm Last Edit: Nov 27, 2012, 12:19 pm by SukkoPera Reason: 1
No, è il supporto per una sorta di "contenuti dinamici" nelle pagine web. Prova il secondo esempio della libreria Webbino e dovresti capire.

L'uso di PROGMEM in questo frangente è solo per risparmiare più RAM possibile.

Ho aggiunto le istruzioni dettagliate per l'installazione al primo post. A questo punto sei moralmente obbligato a seguirle e dirmi se va tutto bene :). Ho anche aggiunto il file html.h al repository, riscaricalo.

bacconi

Ciao, mi sembra di averle scaricate tutte e messe in una cartelle di nome "nome libreria" senza .h nella cartella libraries dell arduino.
è il percorso giusto?
ti ho postato una foto dell errore, se riesci a capire.

SukkoPera

Francamente è un errore che non ho mai visto. Prova ad aggionare tutto, vedi le istruzioni che ho messo al primo post e vediamo se capita ancora!

tuxduino

La macro F() ritorna un const __FlashStringHelper*

Code: [Select]

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))


Mentre la get_get_parameter() accetta un __FlashStringHelper*

Code: [Select]

char *get_get_parameter (__FlashStringHelper *param);


In SmartStrip2.ino ci sono righe come:
Code: [Select]

param = request.get_get_parameter (F("mac"));


che forzano il passaggio di un puntatore const ad uno non const. Ovviamente ciò è proibito, perché significherebbe passare da read-only a read-write.

Forse la get_get_parameter() dovrebbe essere dichiarata così:
Code: [Select]

char *get_get_parameter (const __FlashStringHelper *param);


?

SukkoPera

Sì beh, ho chiaro quale può essere il problema. Probabilmente è giusto aggiungere il const, ma io non lo riscontro, è questo che non mi quadra.

Se il problema si presenta ancora e la modifica suggerita non lo risolve (perché da qualche altra parte chiamo la funzione con argomenti non const), un workaround potrebbe essere l'aggiunta di:

Code: [Select]
char *get_get_parameter (const __FlashStringHelper *param) {
 return get_get_parameter (const_cast<__FlashStringHelper *> (param));
}


Però mi piacerebbe capire meglio perché io non riscontro il problema.

bacconi

Sono ripartito da zero. cancellato tutto, riscaricato tutto con ide 1.01, librerie e modifica x wiz5100 adesso si ferma a:
static Page aboutPage PROGMEM = {about_html_name, about_html, NULL};
con errore:
SmartStrip2:292: error: 'about_html_name' was not declared in this scope

non è che ma convertito tutte le pagine che sono nella cartella \html come è il file html.h nella cartella dello sketch?

le modifiche che ha suggerito anche tuxduino e anche tu ho provato a cercare dove farle, ma non ci arrivo.
ho preso questo arduino per fare una cosa che poi piu o meno si è rivelata il tuo smartstrip, ma è la prima cosa che faccio con arduino

SukkoPera

Uhm, il file html.h l'ho aggiunto stamane al repository proprio per evitare di doverlo generare, c'è già in quello che hai scaricato?

tuxduino

Quote
ho provato a cercare dove farle, ma non ci arrivo.


Nella dichiarazione di get_get_parameter() (e ovviamente nella sua implementazione nel file .cpp).

tuxduino

Quote
Se il problema si presenta ancora e la modifica suggerita non lo risolve (perché da qualche altra parte chiamo la funzione con argomenti non const), un workaround potrebbe essere l'aggiunta di


Se il problema è in effetti quello che ho rilevato io e si presenza in altri casi, la soulzione è aggiugnere const alle eventuali altre funzioni che non hanno questo attributo, non forzare un cast.

bacconi

mi pare che i problemi precedenti forse sono superati, adesso mi da esclusivamente errori di sostituzione:
static var_substitution subDateVarSub PROGMEM = {subDateStr, evaluate_date, NULL};
con errore:
SmartStrip2:791: error: too many initializers for 'var_substitution'
SmartStrip2:791: error: invalid conversion from 'char* (*)(void*)' to 'char* (*)()'

e da solo questi di errore, circa una quindicina

SukkoPera

Quello è perché non hai aggiornato Sukkino, l'ho sistemato stamattina!

@tuxduino: Me ne rendo conto, infatti ho parlato di workaround, non di soluzione definitiva. Vorrei capire bene qual è il problema!

bacconi

Grande SukkoPera, adesso va, ma nell arduino uno non ci entra, il compilato viene 35K, ti risulta?

comunque adesso sto aspettando che mi arrivi il mega2560 e li non ci dovrebbero essere piu problemi.

ma tu avevi detto che l' hai fatto per l' uno o mi sbaglio?

comunque grazie per l' aiuto che mi hai dato appeno arriva il mega lo provo

tuxduino


Quello è perché non hai aggiornato Sukkino, l'ho sistemato stamattina!

@tuxduino: Me ne rendo conto, infatti ho parlato di workaround, non di soluzione definitiva. Vorrei capire bene qual è il problema!


Il vero problema è capire come mai compila... :P

Go Up