|
lib to parse text file from SDCard, for config of RepRap printers December 11, 2010 09:52AM |
Registered: 16 years ago Posts: 356 |
|
Re: lib to parse text file from SDCard, for config of RepRap printers March 27, 2011 06:21PM |
// Function to clear a string
void clearStr (char* str) {
int len = strlen(str);
for (int c = 0; c < len; c++) {
str[c] = 0;
}
}
// Function for parse varibales in a config.txt file stored in sdcard
int getconfig(char* str) {
int valor=0;
char configfile[]="CONFIG.TXT"; // definim fitxer configuracio
if (!file.open(&root, configfile, O_READ)) {
Serial.println("NO TROB CONFIG.TXT!!!");
Serial.println();
}
else{
boolean flag_comando = false;
char configcomando[100];
char comana[6]; // pot guardar fins a 99999 (darrera posició reservada per 0;
int indexconfig=0;
int16_t c;
while ((c = file.read()) > 0) {
configcomando[indexconfig]=(char)c;
indexconfig++;
if(strstr(configcomando,str)){
indexconfig=0;
clearStr(configcomando);
flag_comando = true;
}
if(c==59){
int llarga = strlen(configcomando);
int i2=0; // index de 2on string
for(int cont=1;cont0 ;i--){
voltes++;
if(voltes==5){
valor=valor+((comana[i-1]-48)*10000);
}
if(voltes==4){
valor=valor+((comana[i-1]-48)*1000);
}
if(voltes==3){
valor=valor+((comana[i-1]-48)*100);
}
if(voltes==2){
valor=valor+((comana[i-1]-48)*10);
}
if(voltes==1){
valor=valor+(comana[i-1]-48);
}
}
}
return valor;
}
|
Re: lib to parse text file from SDCard, for config of RepRap printers March 27, 2011 06:30PM |
Registered: 16 years ago Posts: 356 |
uint16_t read_u16 (FIL *file, uint8_t *line)
{
f_gets(line, 80, file); /* read one line */
uint8_t *p_pos = strchr(line, '='); /* find the '=' position */
return (atoi(p_pos+1));
}
|
Re: lib to parse text file from SDCard, for config of RepRap printers July 10, 2012 01:24PM |

#include
#include
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;
// store error strings in flash to save RAM
#define error(s) error_P(PSTR(s))
void error_P(const char *str)
{
PgmPrint("error: ");
SerialPrintln_P(str);
if (card.errorCode()) {
PgmPrint("SD error: ");
Serial.print(card.errorCode(), HEX);
Serial.print(',');
Serial.println(card.errorData(), HEX);
}
while(1);
}
void setup(void)
{
Serial.begin(9600);
Serial.println();
Serial.println("type any character to start");
while (!Serial.available());
Serial.println();
// initialize the SD card
if (!card.init()) error("card.init");
// initialize a FAT volume
if (!volume.init(card)) error("volume.init");
Serial.println();
int cytime=getconfig("temps");
Serial.println(cytime);
}
void loop(void) {
}
// Function to clear a string
void clearStr (char* str) {
int len = strlen(str);
for (int c = 0; c < len; c++) {
str[c] = 0;
}
}
// Function for parse varibales in a config.txt file stored in sdcard
int getconfig(char* str) {
int valor=0;
char configfile[]="CONFIG.TXT"; // definim fitxer configuracio
if (!file.open(&root, configfile, O_READ)) {
Serial.println("NO TROB CONFIG.TXT!!!");
Serial.println();
}
else{
boolean flag_comando = false;
char configcomando[100];
char comana[6]; // pot guardar fins a 99999 (darrera posició reservada per 0;
int indexconfig=0;
int16_t c;
while ((c = file.read()) > 0) {
configcomando[indexconfig]=(char)c;
indexconfig++;
}
/*
if(strstr(configcomando,str)){
indexconfig=0;
clearStr(configcomando);
flag_comando = true;
}
*/
}
return valor;
}