从SD卡文件中获取价值

时间:2013-10-31 20:28:01

标签: arduino

我将-32,-20,-30,-35,-40,-45存储到SD卡Test.cal文件中。我想将它们放入char中,然后将它们放入数组中,而不在数组中使用逗号。最后,结果将是这样的,array [0] = - 32,array [1] = - 20 .....

请帮忙!!!!!

/*
  SD card read/write

 This example shows how to read and write data to and from an SD card file  
 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4

 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe

 This example code is in the public domain.

 */

#include <SD.h>
        char inData[20];
       int index=0; 
       char inchar ;
File myFile;
String test;

void setup()
{
 // Open serial communications and wait for port to open:
  Serial.begin(9600);
   while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  Serial.print("Initializing SD card...");
  // On the Ethernet Shield, CS is pin 4. It's set as an output by default.
  // Note that even if it's not used as the CS pin, the hardware SS pin 
  // (10 on most Arduino boards, 53 on the Mega) must be left as an output 
  // or the SD library functions will not work. 
   pinMode(53, OUTPUT);

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");


  // re-open the file for reading:
  myFile = SD.open("Test.cal");
  if (myFile) {
    Serial.println("test.txt:");

    // read from the file until there's nothing else in it:
    while (myFile.available()) {


       inchar= myFile.read();
       Serial.print(inchar);
       inData[index]=inchar;
       index++;





    }
    // close the file:
    myFile.close();
  } else {
    // if the file didn't open, print an error:
    Serial.println("error opening test.txt");
  }
}

void loop()
{
    // nothing happens after setup
}

1 个答案:

答案 0 :(得分:0)

最好使用数组数组String array:

  char* arrayName[] = {"data1", "data2"}
  When you use the myFile.read() function 
  you pass the value to inChar   Then check if(inChar != '-')
 (int Var)TempNum = inChar - '0'     //get the number
 (String Var)TempA = String(TempNum)  // cast
 (String Var)TempB += TempA    // concat
  else if (inChar == ',')
  arrayName[index] = TempB 
  or use this if the compiler will Scream Error
  TempB.toCharArray(arrayName[index],buffer) [in your case make it 3]
  index++ TempB=""