I am using Seeed studio GPRS shield and ARDUINO mega 2560, SD card to store the climatic data.I wanted to attach the climatic data when it reaches fixed amount of size(ex.50 kb).I am using the following code. I am able to attach a size of 1 kb and unable to attach file with more than 1 kb. can somebody suggest me where have I made the mistake........
declarations
setup()
loop()
{
temperature_humidity(); // gets the temperature and humidity values
light_intensity(); // gets light intensity
dust_value(); // gets dust in environment
tosd_card(); // stores in SD card in file CLIMATIC.txt
myFile = SD.open("climatic.txt");
unsigned long amount=myFile.size();
myFile.close();
Serial.println(amount);
if(amount > 51200)
{
attachment_sending();
}
}
void attachment_sending()
{
delay(5000);
Serial.println("AT+CIPSTART=\"TCP\",\"xxxxxxxxxxxx\",\"25\""); //gprs initialisation is done in the setup
delay(7000);
char h[]="helo xxxx@online.de";
senddata(h);
char a[]="AUTH LOGIN";
senddata(a);
char u[]="V2uhgdrtg";
senddata(u);
char p[]="Vfgjkgfkjg";
senddata(p);
char mf[]="MAIL FROM:<xxxxxxxxxx@online.de>";
senddata(mf);
char mt[]="RCPT TO:<xxxxxxxxxxx@xxxx.COM>";
senddata(mt);
char dt[]="DATA";
senddata(dt);
Serial.println("AT+CIPSEND");//begin send data to remote server
delay(4000);
Serial.println("FROM:<xxxxxxxxxxxxx@online.de>");
delay(1000);
Serial.println("TO:<xxxxxxxxxx@xxxxx.COM>");
delay(1000);
Serial.println("subject:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
delay(1000);
Serial.println("MIME-Version: 1.0");
delay(100);
Serial.println("CONTENT-TYPE: multipart/mixed; boundary=\"three\"");
delay(100);
Serial.println("--three");
delay(100);
Serial.println("Content-Type: multipart/alternative; boundary=\"one\"");
delay(100);
Serial.println("--one");
delay(100);
Serial.println("Content-Type: text/plain; charset=ISO-8859-1");
delay(100);
Serial.println("--one");
delay(100);
Serial.println("Content-Type: text/html; charset=ISO-8859-1");
delay(100);
Serial.println("Content-Transfer-Encoding: quoted-printable");
delay(100);
Serial.println("<p>=A0</p>");
delay(100);
Serial.println("--one--");
delay(100);
Serial.println("--three");
delay(100);
Serial.println("--three");
delay(100);
myFile = SD.open("climatic.txt",FILE_READ);
delay(100);
Serial.println("CONTENT-TYPE: TEXT/PLAIN; charset=US-ASCII; name=CLIMATIC.TXT");
delay(100);
Serial.println("CONTENT-DISPOSITION: ATTACHMENT; FILENAME=CLIMATIC.TXT");
delay(100);
Serial.println("CONTENT-TRANSFER-ENCODING: base64 ");
Serial.println("");
delay(200);
encode();
delay(100);
Serial.println("--three--");
delay(100);
Serial.println(".");
delay(100);
Serial.println(".");
delay(100);
Serial.println((char)26);
delay(20000);
myFile.close();
SD.remove("climatic.txt");
}
void encodeblock(unsigned char in[3],unsigned char out[4],int len)
{
out[0]=cb64[in[0]>>2];
out[1]=cb64[((in[0]&0x03)<<4)|((in[1]&0xF0)>>4)];
out[2]=(unsigned char) (len>1 ? cb64[((in[1]&0x0F)<<2)|((in[2]&0xC0)>>6)] : '=');
out[3]=(unsigned char) (len>2 ? cb64[in[2]&0x3F] : '=');
}
void encode()
{
unsigned char in[3],out[4];
int i,len,blocksout=0;
while (myFile.available()!=0)
{
len=0;
for (i=0;i<3;i++)
{
in[i]=(unsigned char) myFile.read();
if (myFile.available()!=0)
len++;
else
in[i]=0;
}
if (len)
{
encodeblock(in,out,len);
for(i=0;i<4;i++)
Serial.write(out[i]);
blocksout++;
}
if (blocksout>=19||myFile.available()==0)
{
if (blocksout) Serial.print("\r\n");
blocksout=0;
}
}
}
void senddata(char c[])
{
Serial.println("AT+CIPSEND");//begin send data to remote server
delay(100);
Serial.println(c);
delay(100);
Serial.println((char)26);
for(int i=0;i<15;i++)
{
delay(1000);
}
}