Скажите функция initEncoder это моя функция с алгоритмом шифрования?? Правильно ли я поняла, что в переменной х будет хранится символ считанный из файла?
#include <SD.h> void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); // Магия. Этот вывод должен быть настроен как выход. // Иначе, некоторые функции могут не работать. pinMode(10, OUTPUT); // processFile(src_name,dst_name); void initEncoder() { } //File dst_file; byte encodeByte(byte x) { byte y = x; return y; } bool processFile(char *src_name, char *dst_name) { bool result = false; File src_file = SD.open("src_name.txt", FILE_READ); if (src_file) { File dst_file = SD.open("dst_name.txt", FILE_WRITE); if (dst_file) { initEncoder(); while (src_file.available()) { byte x = src_file.read(); byte y = encodeByte(x); dst_file.write(y); } dst_file.close(); result = true; } src_file.close(); } return result; } } void loop() { // nothing happens after setup } Выдает ошибку sketch_apr22a:26: error: a function-definition is not allowed here before '{' token
Если у вас есть какая-то процедура подготовки алгоритма шифрования к работе, она должна вызываться в этом месте. Да.
Код (Text): #include <SD.h> void initEncoder() { // Подготовить шифратор к работе, если это нужно. } byte encodeByte(byte x) { byte y = x; // Вместо этого написать реальный алгоритм преобразования. return y; } bool processFile(char *src_name, char *dst_name) { bool result = false; File src_file = SD.open(src_name, FILE_READ); if (src_file) { File dst_file = SD.open(dst_name, FILE_WRITE); if (dst_file) { initEncoder(); while (src_file.available()) { byte x = src_file.read(); byte y = encodeByte(x); dst_file.write(y); } dst_file.close(); result = true; } src_file.close(); } return result; } void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); // Магия. Этот вывод должен быть настроен как выход. // Иначе, некоторые функции могут не работать. pinMode(10, OUTPUT); // Это не магия, а включение сигнала выборки (SS) интерфейса SPI, через который идет общение с SD картой. processFile("origin.txt","cypher.txt"); } void loop() { // nothing happens after setup }
/* * SD карта подключается так: ** MOSI - пин 11 ** MISO - пин 12 ** CLK - пин 13 ** CS - пин 4 */ #include <iostream> #include <stdio.h> #include <string> #include <limits.h> #include <iostream> #include <string.h> #include <SD.h> char SLOVO[]=""; char SLOVO_GAMMA[]=""; File fileWrite; File fileReadSlovo; File fileReadGamma; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); /// Serial.print("Initializing SD card..."); // Магия. Этот вывод должен быть настроен как выход. // Иначе, некоторые функции могут не работать. pinMode(4, OUTPUT); if (!SD.begin(4)) { Serial.println("initialization failed!"); return; } Serial.println("initialization done."); //=============================== fileReadSlovo = SD.open("TEXT.txt"); if (fileReadSlovo) { int i=0; while (fileReadSlovo.available()) { char c = fileReadSlovo.read(); SLOVO[i++] = c; Serial.print(SLOVO[i-1]); } fileReadSlovo.close(); } //================================ fileReadGamma = SD.open("GAMMA.txt"); if (fileReadGamma) { int i=0; while (fileReadGamma.available()) { char c = fileReadGamma.read(); SLOVO_GAMMA[i++] = c; Serial.println(SLOVO_GAMMA[i-1]); } fileReadGamma.close(); } //======================================== // Открываем файл для записи. Только один файл // может быть открыт одновременно // вы можете закрыть файл, что бы открыть другой. fileWrite = SD.open("test.txt",FILE_WRITE); if(fileWrite){ fileWrite.print("blablanla"); fileWrite.close(); } } void loop() { //Тут ничего не происходит } Посмотрите пожалуйста в чем может быть ошибка.Когда добавляю fileWrite = SD.open("test.txt",FILE_WRITE); if(fileWrite){ fileWrite.print("blablanla"); fileWrite.close(); } то происходит зацикливание программы.