Pages: 1 2 [3]   Go Down
Author Topic: Conversioni  (Read 1848 times)
0 Members and 1 Guest are viewing this topic.
Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 smiley-wink
http://www.science.unitn.it/~fiorella/guidac/guidac025.html
Logged

lucadentella.it

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

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
Logged

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se poi mi chiedi cosa indica l' *... significa che devi rivedere i puntatori smiley-wink
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.
« Last Edit: February 22, 2012, 01:08:04 pm by brunol949 » Logged

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

0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5953
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

x iscrizione
Logged

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

Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco qua il risultato  smiley
Code:
 
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


« Last Edit: February 23, 2012, 05:25:11 am by brunol949 » Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22917
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 333
Posts: 22917
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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


Malo ( VI )
Offline Offline
Sr. Member
****
Karma: 0
Posts: 372
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Beh, il file puoi crearlo in anticipo, anzi puoi anche crearne più di uno vuoti e lasciarli sulla SD "pronti all'uso"  smiley-wink
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
Logged

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

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