taras150162
New member
Нашел код, где ESP32-CAM делает фото и сохраняет в свою феш-память. У меня такой же проект, но esp8266 и смарт-камера. Код адаптировал, но похоже не совсем.
Код записи (только суть) :
#define FILE_PHOTO "/image.png"
-----------------------------
File imgFile = LittleFS.open("FILE_PHOTO ", "w");
uint32_t jpglen = cam.frameLength();
-----------------------------
byte wCount = 0; // For counting # of writes
while (jpglen > 0) {
// read 32 bytes at a time;
uint8_t *buffer;
uint8_t bytesToRead = min((uint32_t)32, jpglen); // change 32 to 64 for a speedup but may not work with all setups!
buffer = cam.readPicture(bytesToRead);
imgFile.write(buffer, bytesToRead);
if(++wCount >= 64) { // Every 2K, give a little feedback so it doesn't appear locked up
Serial.print('.');
wCount = 0;
}
jpglen -= bytesToRead;
}
imgFile.close();
Фото сохраняется в файлик image.png и записывается в LittleFS. Но когда считываю этот файл с LittleFS, на снимке видна только "верхняя часть", т.е. в файл сохраняется только часть снимка.
И что характерно, размер файла 2к. Похоже в цикле не пишется, хотя монитор порта выводит правильное количество точек (Serial.print('.')) - по весу файла, кратно 2к.
Размер снимка вижу в том же мониторе порта.
Подскажите, пож-та, кто видит здесь ошибку.
Не могу понять как работает это выражение - "min((uint32_t)32, jpglen)" -?, что это "(uint32_t)32" ?
Буду признателен за подсказку.
Код записи (только суть) :
#define FILE_PHOTO "/image.png"
-----------------------------
File imgFile = LittleFS.open("FILE_PHOTO ", "w");
uint32_t jpglen = cam.frameLength();
-----------------------------
byte wCount = 0; // For counting # of writes
while (jpglen > 0) {
// read 32 bytes at a time;
uint8_t *buffer;
uint8_t bytesToRead = min((uint32_t)32, jpglen); // change 32 to 64 for a speedup but may not work with all setups!
buffer = cam.readPicture(bytesToRead);
imgFile.write(buffer, bytesToRead);
if(++wCount >= 64) { // Every 2K, give a little feedback so it doesn't appear locked up
Serial.print('.');
wCount = 0;
}
jpglen -= bytesToRead;
}
imgFile.close();
Фото сохраняется в файлик image.png и записывается в LittleFS. Но когда считываю этот файл с LittleFS, на снимке видна только "верхняя часть", т.е. в файл сохраняется только часть снимка.
И что характерно, размер файла 2к. Похоже в цикле не пишется, хотя монитор порта выводит правильное количество точек (Serial.print('.')) - по весу файла, кратно 2к.
Размер снимка вижу в том же мониторе порта.
Подскажите, пож-та, кто видит здесь ошибку.
Не могу понять как работает это выражение - "min((uint32_t)32, jpglen)" -?, что это "(uint32_t)32" ?
Буду признателен за подсказку.