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);
}
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
Post a Comment