stahuju pomoci FTP soubor ze serveru na SD kartu.
maly soubory 3kB vpohode, u vetsich souboru cca 95kB mam problem s poslednim byte v souboru bud je FF ale to tam byt nema. Uz jsem fakt zoufaly a stravil jsem nad tim nekolik dni.
Nejhorsi je, ze z deseti pokusu to jednou stahnu v poradku a 9x spatne... ja to nchapu.
V priloze je nahled k porovnani nalevo co jsem stahnul, napravo zdroj.
tak kdyby mekoho napadlo v cem by mnohl byt problem?
HW:
Arduino MEGA
Modem SIM808
SDkarta
kod:
Kód: Vybrat vše
ommand2(F("AT+FTPGET=1"), F("+FTPGET: 1,1"), F("ERROR"), 30000) == 1) {
int data_size, aux;
sd.vwd()->rewind();
sd.chdir();
String sNazevSouboru = "upload/" + EEPromReadString(315, 15);
char cNazevSouboru[24];
sNazevSouboru.toCharArray(cNazevSouboru, 24);
if (file.open(cNazevSouboru, O_RDWR | O_CREAT | O_AT_END)) {
Serial.println(F("Zacinam nahravat novy fw..."));
do {
if (SendATcommand2(F("AT+FTPGET=2,50"), F("+FTPGET: 2,"), F("+FTPGET: 1,"), 10000) == 1) {
digitalWrite(33, !digitalRead(33));
data_size = 0;
while (Serial1.available() == 0);
aux = Serial1.read();
//zjistim velikost prichozich dat do data_size
do {
data_size *= 10;
data_size += (aux - 0x30);
while (Serial1.available() == 0);
aux = Serial1.read();
} while (aux != 0x0D); //az bude Enter pokracuju
if (data_size > 0) { //Jsou vubec nejaka data?
while (Serial1.available() < data_size); //cekam az bude k dispozici ke stazeni v bufferu ocekavana velikost
Serial1.read(); //cekam az prijde Enter 0D0A (0D prislo pri cekani na delku dat) ted se zbavuji 0A
char cByte;
for (int y = 0; y < data_size; y++) { // ctu obsah bufferu
cByte = Serial1.read();
file.print(cByte); //ukladam do souboru
//Serial.println(cByte, HEX);
}
do {
cByte = Serial1.read();
} while (Serial1.available());
} else {
Serial.println(F("Stazeno..."));
}
} else {
Serial.println("Error from FTP");
}
} while (data_size > 0);
file.close();
} else {
Serial.print(F("chyba pri otevreni pro zapis: "));
}
} else {
Serial.println(F("Problem: FTPGET"));
}
}