Я делаю проект регистратора данных. В моем регистраторе данных у меня есть 5 датчиков, таких как: температура, влажность, акселерометр, свет и барометр. Здесь я храню данные на SD-карте в двоичном формате. Я храню акселерометр @ 3200HZ и все остальные датчики в 1HZ.Чтение двоичных данных с различными типами данных
При записи я добавляю к каждому измерению датчика специальный символ типа $, &, чтобы идентифицировать данные во время чтения. Я не добавляю символ spl для данных акселерометра. Данные акселерометра - это огромные данные с 3200 Гц, поэтому я не добавляю символ spl, поскольку он потребляет некоторую память, а также делает задержку при записи, что приводит к пропуску некоторых образцов и может достигать только 2600 Гц для 3200 Гц.
Мой код Чтение данных выглядит следующим образом:
while((nr = fgetc(logFile)) != EOF)
{
if (nr == '$')
{ // read temp data if nr = $
fread(&temp_read,sizeof(float),1,logFile);
pc.printf("\r\n %f",temp_read);
}
if (nr == '&')
{ // read humidity data if nr = &
fread(&Humidity_read,sizeof(float),1,logFile);
pc.printf("\r\n %f",Humidity_read);
}
else
{ // if nr is not a spl character
data1 = nr;// send nr to a variable.
nr = fgetc(logFile);// read next byte and save it in nr
data2 = nr;// send nr to another variable
int16_t temp = (data1 | (data2 << 8));// club both bytes to form int16_t data
pc.printf("\r\n %i",temp);// print the one axis
}
}
К сожалению, эта программа дает неверные данные. Существует огромная разница. Есть ли другой способ решить эту проблему. Где я делаю ошибки. Заранее спасибо.
Вы знаете, что эти * специальные символы * не очень специальный представлен в двоичном виде? Если вы хотите читать двоичные данные, сначала прочитайте текстовые функции, такие как 'fgetc'. Затем подумайте о том, как правильно разграничить ваши данные. Подсказка: фиксированная ширина/байтовая начинка/текстовое кодирование. –
Мой первый вопрос: уверены ли вы, что SPI правильно читает и записывает SD-карту? Вы пробовали очень низкую скорость чтения и записи фиктивных данных, чтобы убедиться, что даже это работает? – DiBosco
Прежде всего: пожалуйста, укажите свой код. –