Go Down

Topic: Conversioni (Read 2080 times) previous topic - next topic

brunol949


http://programmazione.html.it/guide/lezione/1099/cosa-sono-gli-array/
http://arduino.cc/en/Reference/String

Il primo lo guardo
il secondo lo ho consumato

Non sono gli array che mi sono sconosciuti , ci mancherebbe ( avrei gia' cambiato lavoro )
Come detto sopra e' la trattazione delle stringhe in C che mi e' oscura
E cosa cambia con gli * dopo e prima delle variabili

Ti ringrazio per la pazienza
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

lucadentella

Ciao

parti da un presupposto: le stringhe in C (senza oggetti "wrapper" tipo String...) sono degli array di caratteri terminati, ovvero l'ultimo carattere della stringa sarà '\0'.

se poi mi chiedi cosa indica l' *... significa che devi rivedere i puntatori ;)
http://www.science.unitn.it/~fiorella/guidac/guidac025.html
lucadentella.it

plrmntonio

ricordate che un array di char volgarmente chiamato stringa deve avere una dimensione massima di un carattere in più rispetto alla stringa che ci aspettiamo cioè se voglio scrivere dentro un array di char la parola "Ciao" devo creare un array di dimensioni 5

ES:
char saluto[5]=ciao; //corretto il contenuto di saluto sarà ciao\0 dove \0 è il terminatore di stringa
char saluto2[4]=ciao; //errato il contenuto di saluto2 sarà cia\0

brunol949

#33
Feb 22, 2012, 06:31 pm Last Edit: Feb 22, 2012, 07:08 pm by brunol949 Reason: 1

se poi mi chiedi cosa indica l' *... significa che devi rivedere i puntatori ;)
http://www.science.unitn.it/~fiorella/guidac/guidac025.html

Questa vai tranquillo che me la leggo ed e' gia' nella cartella delle cose utili

Sempre usati anche i puntatori , ma sempre riferiti agli elementi di un array

Ho recentemente completato un lettore di scatolette ; queste vengono scansionate da un laser sugli assi X ed Y per trovarne Altezza ( dal laser ), posizione , larghezza per differenza , lunghezza .
Quindi riscansionate in X ad una distanza predefinita diversa dalla precedente e quindi confrontando le 2 posizioni X ricavo l'angolo di inclinazione
Finito questo leggo i barcode
Tutto questo e' un enorme array la cui dimensione e' data dal numero di scatole trovate sul piano

Non sono un matematico ma su queste cose mi destreggio abbastanza bene riuscendo a fare anche dei programmi abbastanza ottimizzati
Pero' son tutti linguaggi simil basic e del C ricordo poco ; e' passato un bel di tempo da quando feci un corso .

Ti ringrazio per la risposta e per il link
Stasera sono stanco ma domattina son libero e mi butto nella lettura e sperimentazione.
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Testato

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

brunol949

#35
Feb 23, 2012, 11:21 am Last Edit: Feb 23, 2012, 11:25 am by brunol949 Reason: 1
Ecco qua il risultato  :)
Code: [Select]
 
int pc = 0 ;  // puntatore caratteri letti
int pi = 0 ;  //  puntatore numeri da archiviare
int Num[22];  // dimensiono l'array dei numeri
char Stringa[4]; // array caratteri da convertire in numemero

//   Omissis ...  fare riferimento agli esempi SD\DumpFile

File dataFile = SD.open("IPL.txt");
  if (dataFile) {
    while (dataFile.available()) {
      char x = (dataFile.read());
      //if (x != '\r' && x != '\n'){  // da abilitare se le serie di numeri sono su piu' righe / mangia 12 byte
        if (x != ',' ){
            Stringa[pc++] = x ; }
        else {
            Num[pi]=atoi(Stringa) ;
            for(pc=0;pc<=3;pc++){Stringa[pc] = ' ';}
            pc = 0 ;
            pi++ ;  } // fine else
        //}      // Fine del if disabilitato piu' sopra
    } // End while
    dataFile.close();   
   } // End if (dataFile)

for(pi=0;pi<=21;pi++){ Serial.println(Num[pi]);} // verifico il risultato sul serial monitor

Siccome i numeri letti sono a 1 2 e 3 cifre ho dovuto inserire il for che cancella tutti gli elementi del'array altrimenti veniva falsata la conversione causa permanenza nell'array di quanto letto in precedenza
Se poi ci sia un modo per "svuotare" l'array piu' semplice vado a studiarmelo nei link suggeriti

diciamo che per leggere 22 "parametri" si sono consumati
Binary sketch size: 13814 bytes (of a 32256 byte maximum)

Se c'e' spazio puo' andare ma se non sussiste la necessita' di cambiare i valori si brucia un sacco di memoria
Puo' andare anche se comunque viene inclusa la libreria della SD

Il tutto comunque e' stato un buon esercizio  :smiley-mr-green:


Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

leo72

Il problema è la libreria SD, che si brucia da sola una dozzina di kB di memoria. Potresti usare la petit File-System:
http://elm-chan.org/fsw/ff/00index_p.html

Ha funzionalità molto limitate ma supporta la FAT32 ed occupa da 2 a 4 kB di Flash appena. Io non l'ho provata però se devi solo leggere/scrivere da un file forse ti potrebbe far comodo.

brunol949


Ha funzionalità molto limitate ma supporta la FAT32 ed occupa da 2 a 4 kB di Flash appena. Io non l'ho provata però se devi solo leggere/scrivere da un file forse ti potrebbe far comodo.

Da una rapida occhiata  sembrerebbe avere tutto quello che serve a parte limitazioni descritte
Mi pare che SD , vista al volo , consenta di creare e cancellare file che l'altra non fa' , devono esistere
poi non aggiorna la data ma se non hai un rtc la cosa conta poco

Certo che occupare il triplo di memoria per fare proprio poco in piu ....

Grazie per la tua prontezza e disponibilta'
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

leo72

Beh, il file puoi crearlo in anticipo, anzi puoi anche crearne più di uno vuoti e lasciarli sulla SD "pronti all'uso"  ;)

brunol949


Beh, il file puoi crearlo in anticipo, anzi puoi anche crearne più di uno vuoti e lasciarli sulla SD "pronti all'uso"  ;)

Infatti
Bisognerebbe analizzare in dettaglio ma a prima vista non trovo sulla libreria SD.h "features" tali da giustificare l'occupazione del triplo della memoria
Le mie opere : Flusso correnti nell'impianto fotovoltaico http://arduino.webveneto.net/energy_control/     PING ed E.Mail http://arduino.web

Go Up