Сохранение и чтение массива float с карты памяти
- Войдите на сайт для отправки комментариев
Ср, 20/05/2015 - 21:19
Здравствуйте. Сделал по приведенному на форуме примеру чтение-запись массива
В результате пишет он туда скорее всего только "целое" как быть. Вот код, возможно я что то делаю неверно, поправьте, пожалуйста.
#include <SPI.h> #include <SD.h> float ValveClock[4] = {0.75, 1.0, 0.9, 3.4}; byte i,j,l; File MyFile; void setup() { Serial.begin(9600); while (!Serial); if (!SD.begin(53)) { Serial.println("initialization failed!"); return; } SaveConfig(); LoadConfig(); } void loop() { } void SaveConfig() { int tmp=1; byte j, l; if (SD.exists("config.ok")) { SD.remove("config.ok"); } if (SD.exists("config.ini")) { SD.remove("config.ini"); } MyFile = SD.open("config.ini", FILE_WRITE); if (MyFile) { for (j=0;j<4;j++) { MyFile.write(ValveClock[j]); Serial.print(j); Serial.print(" "); Serial.print(ValveClock[j]); Serial.print(" || "); } Serial.println(" "); MyFile.close(); MyFile = SD.open("config.ok", FILE_WRITE); MyFile.write("ok"); Serial.println(" OK FILE "); MyFile.close(); } } void LoadConfig() { Serial.println(" read config"); if (SD.exists("config.ok")) { Serial.println(" file ok"); if (SD.exists("config.ini")) { Serial.println(" config ok"); MyFile = SD.open("config.ini", FILE_READ); Serial.println(" VClock "); for (j=0;j<4;j++) { ValveClock[j]=MyFile.read(); Serial.print(j); Serial.print(" "); Serial.print(ValveClock[j]); Serial.print(" || "); } Serial.println(" "); Serial.println(" Sednsors "); MyFile.close(); } } }
сам дошел
Описание
Записывает данные в файл.
Синтаксис
file.write(data)
file.write(buf, len)
Параметры
file: экземпляр класса File (возвращаемый функцией SD.open())
data: записываемый байт данных (byte), символ (char) или строка (char *)
buf: массив символов или байт
len: количество элементов массива
Хотя, подскажите, как мне правильно считывать байты и преобразовывать их во флоат. Пока что это выглядит вот так:
Матиас Сракоши, когда же перестанет паскаль сквозить в коде???
час с кодом насильничали!
Пишите if(1 ==tmp) будет чуть полегче
проблема в том, что я забываю про второе равенство :-)
Так я про это и говорю, это для этого пишется сначала константа, потом переменная и присвоение константе словит компилятор, выдаст ошибку.
ОУ, Вы Гуру!!! теперь буду привыкать к этому :-)
К сожалению сейчас вряд ли найду, есть рекомендации по приемам программирования, которые я где то читал, оттуда это и осталось. Так что это я не сам придумал :)