Salve a tutti e scusate il disturbo.
Ho realizzato un progetto con la ESP32-CAM per la cattura ed il salvataggio delle immagini catturate.
Utilizzo la libreria : ESP32_FTPClient.h
Ho riscontrato un problema quando provo a copiare un'immagine jpg dalla SD-CARD all'area FTP.
L'immagine viene copiata correttamente ma è illeggibile.
Prima di provare a trovato aiuto qui, vi assicuro che ho cercato qualsiasi riferimento utile ma non sono riuscito a trovare nulla.
Allego la parte di codice che esegue questa operazione.
/************************************************/
/* RICERCA FOTO VIAGGIO DA TRASFERIRE */
/************************************************/
void CerFotVia(fs::FS &fs, const char * dirname, uint8_t levels)
{
Serial.printf("Listing directory: %s\n", dirname);
File root = fs.open(dirname);
if(!root)
{
Serial.println("Failed to open directory");
return;
}
if(!root.isDirectory())
{
Serial.println("Not a directory");
return;
}
File file = root.openNextFile();
while(file)
{
if(file.isDirectory())
{
Serial.print(" DIR : ");
Serial.println(file.name());
if(levels)
{
CerFotVia(fs, file.path(), levels -1);
}
}
else
{
Serial.print(" FILE: ");
Serial.print(file.name());
Serial.print(" SIZE: ");
Serial.println(file.size());
// Trasferimento Immagini del Viaggio
NumDocCar +=1;
TraFotVia(file.path(),file.size());
// Cancellazione Documento Trasferito
DelDocVia(SD_MMC,file.path());
}
file = root.openNextFile();
}
}
/************************************************/
/* CANCELLA DOCUMENTO VIAGGIO TRASFERITO SI FTP */
/************************************************/
void DelDocVia(fs::FS &fs, const char * path)
{
Serial.printf("Deleting file: %s\n", path);
if(fs.remove(path))
{
Serial.println("File deleted");
}
else
{
Serial.println("Delete failed");
}
}
/************************************************/
/* AVVIA TRASFERIMENTO IMMAGINI */
/************************************************/
void TraFotVia(String NomFot,int DimFot)
{
char Foto[40];
boolean EsiConFtp = false;
int NumTenTra = 0;
// Forma Percorso Cartella Viaggio
w0 = String(FTP_DIR) + String(DirViaTra) + "/";
LW = w0.length()+1;
w0.toCharArray(PatViaFtp, LW);
Serial.printf("DirViaTra %s , PatViaFtp %s, DimFot %d NomFot , ",DirViaTra,PatViaFtp,DimFot);
Serial.println(NomFot);
ESP32_FTPClient ftp (FTP_SER,FTP_POR,FTP_USR,FTP_PWD, 5000, 2);
// Apertura Immagine
//w0 = String(DirViaTra) + "/" + NomFot;
//Serial.println(w0);
w0 = NomFot.substring(1);
LW = w0.length()+1;
w0.toCharArray(Foto, LW);
while (EsiConFtp == false && NumTenTra < 3)
{
ftp.OpenConnection();
if ( ftp.isConnected() )
{
//ftp.ChangeWorkDir( PatViaFtp );
ftp.ChangeWorkDir( FTP_DIR );
ftp.InitFile("Type I");
ftp.NewFile(Foto);
ftp.WriteData( (unsigned char *)Foto,sizeof(Foto));
ftp.CloseFile();
ftp.CloseConnection();
NumDocTra +=1;
EsiConFtp = true;
}
else
{
delay(500);
NumTenTra+=1;
}
}
}