Pages: [1]   Go Down
Author Topic: Ma il concat su IDE 1.0 non va più?  (Read 837 times)
0 Members and 1 Guest are viewing this topic.
Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3486
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti.
Dunque io avevo nella 0022 questo pezzetto di sketch che mi leggeva tutti gli stati delle porte sul mega 2560 è fatto in modo grezzo lo so, userò i registri PORTD, PORTA, PORTH ecc anche se non me li mette in ordine come servirebbe a me, ma il problema è sempre quello trasformare tutto in stringa

questo è il pezz che funzionava bene sulla 0022
Code:
static void ReadPins()
{
  int ii;
  int pinValue;
  
for (ii = 0; ii < 54; ii++)
{
pinValue=digitalRead(ii);
                arr_Dport[ii]=pinValue;
                send_arr_Dport = send_arr_Dport.concat(pinValue); //riga che da errore
//Serial.println("pin#"+ (String)ii + " valore D " + pinValue);
}

for (ii = 0; ii < 15; ii++)
{
pinValue = analogRead(ii);
                arr_Aport[ii]=pinValue;
               send_arr_Aport = send_arr_Aport.concat(pinValue)+";";// riga che da errore
                //Serial.println("pin#A"+ (String)ii + " valore A " + pinValue);
}

}

send_arr_Dport è una variabile dichiarata String che viene spedita al client di questo formato
ARR_D#1100001000001100000100010000000010000001000100000010110@
praticamente sono tutti gli stati delle porte digitale indifferentemente che siano input o output dalla 0 alla 54

send_arr_Aport è una variabile dichiarata String che viene spedita al client di questo formato
ARR_A#725;152;812;56;166;644;578;98;365;125;541;712;963;245;517;441;@
praticamente sono tutti i valori delle porte analog dalla A0 alla A15

il client legge la stringa con un javascript  così, rappresentati poi su una pagina web con 54 caselle che cambiano colore in base allo stato + 16 progress bar

Code:
success: function(status)
      {
       //document.modulo.testo1.value  = status;    // connessione 1
       document.modulo.areatesto.value  += "Ricevuto da Arduino modo GET ..........  \n"; scrollIt();
       document.modulo.areatesto.value  += status;    scrollIt();
                 
          str_search = "ARR_D#";       // legge la stringa  DigitalOutputPort
          matchPos = status.search(str_search);
          if(matchPos != -1)
             {    
                for(var j=0; j < D_N_Port; j++)
                {          
                  var jj= matchPos+6+j; //6 perchè all'inizio stringa ci sono i caratt ARR_D#
                                                    
                        if (status.charAt(jj) == "0")
                        {
                          str_aa= on_off_col[j];
                          document.getElementById(str_aa).style.background ='#939393'; //colora casella grigio scuro
                        }
                        
                        if (status.charAt(jj) == "1")
                        {
                          str_aa= on_off_col[j];
                          document.getElementById(str_aa).style.background ='#FACC2E'; //colora casella in giallo
                        }
                        
                }
             }  
              
             str_search = "ARR_A#";       // legge la stringa  AnalogInputPort
             matchPos = status.search(str_search);
          if(matchPos != -1)
             {    
                var new_status = status.substring(matchPos+6, matchPos+6+80)
                var arr_separat = new_status.split(';') //prende i valori tra i simboli punto e virgola e li registra in un array
          
                //document.modulo.areatesto.value  += new_status;     scrollIt();

             }  
            
              
               // progress bar visualizzazione
...............................
...............................

non riesco più a ottenere una stringa valida da inviare al client usando l IDE 1.0, questo è l'errore

sketch_apr12a.cpp: In function 'void ReadPins()':
web server 2:722: error: invalid conversion from 'unsigned char' to 'const char*'
web server 2:722: error: initializing argument 1 of 'String& String::operator=(const char*)'

Qualcuno mi saprebbe indicare la strada per risolvere la conversione?

grazie saluti



« Last Edit: April 12, 2012, 05:19:39 am by pablos » Logged

no comment

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 23
Posts: 1180
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
static void ReadPins()
{
  int ii;
  int pinValue;
 
for (ii = 0; ii < 54; ii++)
{
pinValue=digitalRead(ii);
                arr_Dport[ii]=pinValue;
                send_arr_Dport.concat(pinValue); //riga che da errore
//Serial.println("pin#"+ (String)ii + " valore D " + pinValue);
}

for (ii = 0; ii < 15; ii++)
{
pinValue = analogRead(ii);
                arr_Aport[ii]=pinValue;
                send_arr_Aport.concat(pinValue)+";";// riga che da errore
                //Serial.println("pin#A"+ (String)ii + " valore A " + pinValue);
}

}

Prova così. Dovrebbe funzionare!
Logged

F

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3486
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie Federico

In realtà non ottengo più un errore di compilazione, ma il javascript non riceve la stringa su questo devo verificare il perchè
in uscita debug sul serial monitor leggo alla fine dei 2 for:

          Serial.println(send_arr_Dport);
          Serial.println(send_arr_Aport);


100010000010010000001110000000000000000000000000001101
4395451104135147163174194200206211214220221206

i separatori non vengono più inseriti mannaggia la pupazza

ciao

Logged

no comment

Global Moderator
Milano, Italy
Offline Offline
Edison Member
*****
Karma: 23
Posts: 1180
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
send_arr_Aport.concat(pinValue);
send_arr_Aport += ';';

Nella classe String esiste l'operatore "+=" ma non "+".
Nota che "+=" è uguale a usare concat(), quindi il tutto potrebbe diventare:

Code:
send_arr_Aport += pinValue;
send_arr_Aport += ';';
Logged

F

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3486
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

risolto con questo

send_arr_Aport += pinValue;
send_arr_Aport += ';';

Grazie ancora Federico, mi sono perso in un bicchiere d'acqua ecco il risultato

ciao
 


* tinywebserver foto.PNG (108.86 KB, 1280x1024 - viewed 18 times.)
Logged

no comment

0
Offline Offline
Faraday Member
**
Karma: 49
Posts: 6019
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e' la seconda volta che mi affascina questo tuo pannello  smiley
e' un progetto open ? non ricordo piu', oppure almeno mi dici a cosa serve, sono curioso come una femmina  smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Genova
Offline Offline
Faraday Member
**
Karma: 43
Posts: 3486
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sono diversi mesi che ci lavoro, poi ho smesso perchè fino alla 0023 la ethernet W5100 aveva seri problemi di stabilità, girava tutto bene poi non si sa per quale motivo si inchiodava, se lo disalimentavi e rialimentavi ci volevano svariati reset per farlo ripartire, così ho deciso di passare tutto su 1.0 prima di passare a un ARM o un altra piattaforma e buttare via arduino.
Ora è acceso da 10 gg circa e funziona sempre

Lo scopo del progetto è quello di creare una piattaforma arduino "universale" programmabile e visualizzabile solo da web.
Tu lo prendi vuoto carichi questo software e ti programmi le porte come un plc tutto con i setup, tutti i dati finiscono su un file .ini riavvii e lo sketch fa tutto quello che hai scritto nello START.INI
Questa pagina è nata per verificare in modo ottico se tutti i dati ricevuti in jquery erano corretti, cosa c'e' di meglio di un immagine che si accende o una barra che si sposta quando quando passi la mano sulla fotoresistenza.

ogni singola porta dovrebbe essere programmata con una pag così anche se ancora non mi soddisfa, non copre il 100% di possibili combinazioni, comunque tutto finire dentro un INI

lettura dei log da remoto, possibilità di modificare i file dentro la sd diventando un vero e proprio editor il client ecc

Lo scopo di creare i gruppi che porterò a 99 è il seguente :
esempio:
programmo la porta 10 come input e gli dico quando passi a 1 commuta le porte del gruppo 5
programmo la porte 24 come output  gli assegno un gruppo es  5
programmo la porte 27 come output  gli assegno un gruppo es  5

quando un evento manuale o automatico commuta a 1 la 10 automaticamente anche la 24 e 27 passano a 1 poi ciascuna di esse sarà bistabile o monostabile dipende dal setup che hai messo su quelle porte

con i gruppi è come se facessi degli OR-AND ma questo lo devo rivedere lo stesso con le porte analogiche

Quindi ti fai un piccolo impianto domotico senza sapere nulla di sketch, non lo devi nemmeno toccare, ovviamente se devi fare qualcosa di robotico con questo non ci fai prprio nulla

ciao


* digitalport.PNG (104.84 KB, 1280x1024 - viewed 13 times.)
« Last Edit: April 12, 2012, 04:23:11 pm by pablos » Logged

no comment

0
Offline Offline
Faraday Member
**
Karma: 49
Posts: 6019
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e' un grande progetto,
tutte queste opzioni incutono timore.
complimenti  smiley
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Pages: [1]   Go Up
Jump to: