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

