Устройство чтения SD-карт и ЖК-дисплей
У меня есть устройство чтения SD-карт и ЖК-дисплей. Я хочу отобразить растровое изображение с библиотекой u8g2. Мое растровое изображение выглядит так:
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00
Если я напишу это в arduino ide, например:
static unsigned char bytes[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00
};
Все работает нормально. Итак, как я могу прочитать его с SD-карты, чтобы получить тот же результат, что и во втором коде?
@jasiekk, 👍-1
1 ответ
Об этом говорится в нескольких темах Arduino. Эта ветка, эта тема & эта тема найдена всего 3.
Похоже, чтение и SDCard с использованием Arduino приводит к тексту, похожему на строку символов. Задача состоит в том, чтобы разобрать это (при необходимости) и преобразовать в желаемые отдельные значения.
Наиболее эффективным способом сделать это может быть использование toCharArray() для копирования символов строки в массив символов (буфер). Однако это означает, что данные хранятся на SDCard именно так, как это необходимо. Что может быть трудно сделать. Проще говоря, программа будет считывать строку (вероятно, непечатаемых букв) с SDCard. Затем используйте приведенную выше функцию для преобразования этой строки в предоставленный массив символов (буфер).
(Некоторые более опытные читатели могут сказать, что если использовать здесь объединение, то строка символов и массив символов типа будет занимать ту же память и, следовательно, иметь те же данные.Поэтому вызов функции преобразования не требуется.После того как вы читаете данные в виде строки, они будут доступны для чтения в виде массива символов. )
Чаще предпочтительнее хранить данные SDCard для Arduino в текстовом формате (для печати). Кроме того, похоже, что большинство данных хранятся в формате CSV. При обратном чтении в этом формате строки должны быть проанализированы. То есть запятые должны быть найдены, а печатные числа между запятыми должны быть индивидуально преобразованы из коротких строк символов в значения. Функция atoi() используется для преобразования строки символов, такой как "123", в целочисленное значение 123. Затем вы можете преобразовать это число из целого числа в unsigned char для сохранения в массиве.
Другой и, возможно, более простой подход — использовать вызов функции toint(). Может показаться, что при чтении числа, за которым следует возврат каретки из SDCard, тогда невоспетая эта функция приведет к целочисленному значению. Вам не нужно было бы искать и удалять символы разграничения, так как функция toint() ищет для вас символы возврата каретки в качестве разграничивающего символа.
Во многих случаях работа с неизвестным объемом данных является проблемой. Если ваши данные всегда будут фиксированного размера в 36 байт - вас это не должно волновать.
- Режимы открытия файлов на SD-карте Arduino добавление/перезапись
- Правильная схема карты Micro SD
- Сохранение файла .txt на SD-карту и чтение данных каждого содержимого в файл txt, а затем сохранение его в переменной
- Как установить атрибуты для SD-файлов?
- Использование SD-адаптера 5 В в системе 3,3 В
- Лучшая практика буферизации для непрерывной записи на SD-карту
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- DFPlayer для записи на SD-карту