Pages: 1 [2] 3   Go Down
Author Topic: SmartStrip - Controllo prese elettriche da web  (Read 3312 times)
0 Members and 1 Guest are viewing this topic.
Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3265
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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?
Logged

no comment

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley. Ho anche aggiunto il file html.h al repository, riscaricalo.
« Last Edit: November 27, 2012, 06:19:15 am by SukkoPera » Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.


* smartstrip2.JPG (67.15 KB, 500x823 - viewed 18 times.)
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La macro F() ritorna un const __FlashStringHelper*

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

Mentre la get_get_parameter() accetta un __FlashStringHelper*

Code:
char *get_get_parameter (__FlashStringHelper *param);

In SmartStrip2.ino ci sono righe come:
Code:
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:
char *get_get_parameter (const __FlashStringHelper *param);

?
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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.
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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).
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Piemonte, Italia
Offline Offline
Jr. Member
**
Karma: 1
Posts: 65
Just a brick in the wall
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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... smiley-razz
Logged

Pages: 1 [2] 3   Go Up
Jump to: