Моя конечная цель - отправить файл размером 30 КБ на XBEE на другой ардуино. Но пока я просто пытаюсь дублировать файл 4 КБ на SD, подключенный к первому arduino. Сначала я попытался отправить данные по одному байту на один байт. Это сработало и файл успешно дублируется. но я должен иметь буфер, а затем отправлять данные по 64-байтным пакетам в XBEE, чтобы я мог читать и записывать файлы в 64-байтных пакетах. это то, что я сделал:Передача файла с arduino
#include <SD.h>
#include <SPI.h>
void setup() {
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
if (!SD.begin(4)) {
Serial.println("begin failed");
return;
}
File file = SD.open("student.jpg",FILE_READ);
File endFile = SD.open("cop.jpg",FILE_WRITE);
Serial.flush();
char buf[64];
if(file) {
while (file.position() < file.size())
{
while (file.read(buf, sizeof(buf)) == sizeof(buf)) // read chunk of 64bytes
{
Serial.println(((float)file.position()/(float)file.size())*100);//progress %
endFile.write(buf); // Send to xbee via serial
delay(50);
}
}
file.close();
}
}
void loop() {
}
Он успешно не завершить свой прогресс до 100%, но когда я открываю SD на ноутбуке файл создается, но отображается как 0 KB файл.
В чем проблема?
Добавление комментария: Я просто добавил строку: endFile.close(); Теперь исходный файл находится в 2 КБ и поврежден. но исходный файл - 3 КБ. – alireza