What is wrong in my second program? (Solved)


i want read string , more floats sd-card (slsetup.csv) , store values internal eeprom.

first wrote program read figures sd-card; functions fine:

//===========================================================================
//import parameters sd-card (slsetup.csv), convert them float-variables (and put them in eeprom on board of arduino 2560 mega)
void import_parameters(){

 int intn=1;
 byte asciivalue;
 string strbuffer="";
 float sngtempvalue;

 //open file reading:
 myfile = sd.open("slsetup.csv");
 //read projectname string, n has numberofcharacters +2 (so including cr , lf)
 for (intn=1; intn<=13; intn++)
     {char in_char = myfile.read();
     int intasciivalue = int(in_char);
     strbuffer += in_char;}
 
  serial.print("arduino received: ");  serial.print(strbuffer);  serial.print("\n");
  strbuffer = ""; // clear received buffer
 
 //read floats
 while (myfile.available()) {
     char in_char = myfile.read();
     strbuffer += in_char;
     if (in_char=='\n') {
         serial.print("arduino received: "); serial.print(strbuffer); serial.print("\t"); serial.print("floatwaarde = "); serial.print(strtofloat(strbuffer),8); serial.print("\n");
         strbuffer = ""; // clear received buffer
         } // end if
 }  //end while

 // close file:
 myfile.close();
}  //end of function

//============================================================================
float strtofloat(string str){
 char carray[str.length() + 1]; //determine size of array
 str.tochararray(carray, sizeof(carray)); //put str array
 return atof(carray);
}[/color]


lateron made changes, result program comes in loop (only string , first float read)!
//===========================================================================
//page 26, import parameters sd-card (slsetup.csv), convert them float-variables (and put them in eeprom on board of arduino 2560 mega), written on 20130531
void import_parameters(){

int intn=1; byte asciivalue; string strbuffer=""; float sngtempvalue;
char output[] = "       ",  chararray[]="",  eol='\n', in_char;
file myfile;
int introw=1, intstarttime, intendtime;

intstarttime=millis();

//open file reading:
myfile = sd.open("slsetup.csv");
       //read projectname string, n has numberofcharacters +2 (so including cr , lf)
       for (intn=1; intn<=21; intn++){
           char in_char = myfile.read();
           strbuffer += in_char; }  //end loop
       //store projectname eeprom
       strbuffer.tochararray(chararray, 21);   //conversion of string (strbuffer) characterarray. aantal moet 2 hoger zijn dan aantal letters  
       serial.print(chararray);  serial.print("\n");    
       eeprom.writeblock<char>(0, chararray, 21);  
       strbuffer = ""; // clear received buffer  
       
       //read floats
       while (myfile.available()) {
           char in_char = myfile.read();
           serial.print(in_char);  serial.print("\n");  
           strbuffer += in_char;
           if (in_char=='\n') {
                 //store floats eeprom
                 eeprom.writefloat(introw*4+16, strtofloat(strbuffer));  
                 serial.print(strtofloat(strbuffer));  serial.print("\n");    
                 introw++;
                 strbuffer = ""; // clear received buffer  
                 } // end if
           }  //end while

// close file:
myfile.close();  

intendtime = millis();
serial.print (intendtime - intstarttime); serial.println();

serial.print (eeprom.readblock<char>(0, output, 19));  serial.println();  
serial.print (eeprom.readfloat(20));  serial.println();  
serial.print (eeprom.readfloat(24));  serial.println();  
serial.print (eeprom.readfloat(28));  serial.println();  
serial.print (eeprom.readfloat(32));  serial.println();  



intendtime=millis();
serial.print(intendtime - intstarttime); serial.print('\n');

}  //end of function

//============================================================================
float strtofloat(string str){
 char carray[str.length() + 1]; //determine size of array
 str.tochararray(carray, sizeof(carray)); //put str array
 return atof(carray);
}

start here


Arduino Forum > Using Arduino > Programming Questions > What is wrong in my second program? (Solved)


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62