Чтение данных с SD карты
Чтение данных с SD карты
Всем добрый день. Подскажите пожалуйста, есть ли возможность считывания данных с SD карты в ардуино не в ком-порт. В частности стоит задача считывать цифры с текстового файла построчно с определенным периодом времени и далее их обрабатывать. Файл имеет подобную структуру:
1 1 1 1 1 0 1 \n
0 0 0 0 0 0 1 \n
0 0 0 0 0 0 1 \n
1 0 0 1 0 0 0 \n
0 0 0 0 0 0 0 \n
0 0 0 0 0 0 0 \n
1 1 1 1 0 0 0 \n
Можно и без символа переноса строки.
Спасибо
1 1 1 1 1 0 1 \n
0 0 0 0 0 0 1 \n
0 0 0 0 0 0 1 \n
1 0 0 1 0 0 0 \n
0 0 0 0 0 0 0 \n
0 0 0 0 0 0 0 \n
1 1 1 1 0 0 0 \n
Можно и без символа переноса строки.
Спасибо
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Чтение данных с SD карты
Смотрите пользовательские блоки в соответствующем разделе. М. б. найдете для себя решение.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
[ref]Дончанин[/ref], написать пб думаю не сложно.
Вопрос в том, как Вы собираетесь организовывать запись данных на карту - это влияет на процесс их получения.
Отправлено спустя 3 минуты :
1 1 1 1 1 0 1 \n = как байт 125
0 0 0 0 0 0 1 \n = как байт 1
0 0 0 0 0 0 1 \n
1 0 0 1 0 0 0 \n = как байт 72
0 0 0 0 0 0 0 \n
0 0 0 0 0 0 0 \n
1 1 1 1 0 0 0 \n
Зачем столько лишнего?
Вопрос в том, как Вы собираетесь организовывать запись данных на карту - это влияет на процесс их получения.
Отправлено спустя 3 минуты :
1 1 1 1 1 0 1 \n = как байт 125
0 0 0 0 0 0 1 \n = как байт 1
0 0 0 0 0 0 1 \n
1 0 0 1 0 0 0 \n = как байт 72
0 0 0 0 0 0 0 \n
0 0 0 0 0 0 0 \n
1 1 1 1 0 0 0 \n
Зачем столько лишнего?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Чтение данных с SD карты
В пользовательском разделе к сожалению ничего не нашел, есть только эта ссылка, но блока там нет:
http://elref.ru/forum/11-46-1
Запись данных на карту будет обычным способом, вручную с компьютера через картридер. Данный код формирует моя программа на компьютере. Длина строки будет гораздо больше. И важно именно так. Потому что далее, ардуинка определяет каждый символ в строке и если он 1, то открывается соответствующий пин, если 0, то, соответственно пин молчит. Спустя 0.2 сек, ардуинка должна перейти на новую строку и в зависимости от данных переключить пины. Выходов будет много, все через сдвиговые регистры и переменные. Да и сам код около 1000 строк.
Отправлено спустя 12 минут 59 секунд:
Через юарт все получается программа отсылает данные строчками, ардуинка ловит и реагирует. А вот автономно не получается....
http://elref.ru/forum/11-46-1
Запись данных на карту будет обычным способом, вручную с компьютера через картридер. Данный код формирует моя программа на компьютере. Длина строки будет гораздо больше. И важно именно так. Потому что далее, ардуинка определяет каждый символ в строке и если он 1, то открывается соответствующий пин, если 0, то, соответственно пин молчит. Спустя 0.2 сек, ардуинка должна перейти на новую строку и в зависимости от данных переключить пины. Выходов будет много, все через сдвиговые регистры и переменные. Да и сам код около 1000 строк.
Отправлено спустя 12 минут 59 секунд:
Через юарт все получается программа отсылает данные строчками, ардуинка ловит и реагирует. А вот автономно не получается....
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Чтение данных с SD карты
Попробуйте "допилить" это. Или Александр может поможет.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Чтение данных с SD карты
[ref]Дончанин[/ref],
Сегодня думал написать блоки работы с SD для esp32,
как раз просматриваю стандартные библиотеки для них.
В вашем варианте (на данный момент) вижу 1 вариант.
Если строка не длинная, (меньше 512байт)
записывать каждую строку в свой файл, именам дать номера, и по ним делать выборку.
Сегодня думал написать блоки работы с SD для esp32,
как раз просматриваю стандартные библиотеки для них.
В вашем варианте (на данный момент) вижу 1 вариант.
Если строка не длинная, (меньше 512байт)
записывать каждую строку в свой файл, именам дать номера, и по ним делать выборку.
Win10-64, FLProg (portable)
Чтение данных с SD карты
Спасибо. но не совсем удобный вариант. Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
Может что-то на примере этого:
https://vk.com/topic-5409517_27662496
Может что-то на примере этого:
https://vk.com/topic-5409517_27662496
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Чтение данных с SD карты
Можно файлы в разных папках хранить, и выбирать по директории,Дончанин писал(а): 19 фев 2020, 12:41 Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
а так надо с многомерными массивами уметь работать, в флп этого нет,
значит писать под каждую задачу свой блок, а это еще то занятие с таким не гибким инструментарием ))
Win10-64, FLProg (portable)
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
Есть идея, вчера пришла в голову....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
Не уловил....
Вы можете её заставить делать выход данных иначе, без пробелов, но с \n?
Будет намного проще с большими объёмами данных и обработкой.
Или так
*01010101011
*11010101010
и т.д. ?
Главное, что-бы файл по размеру бибка смогла осилить.
Отправлено спустя 4 минуты 24 секунды:
Учитывая, что в регистр пишется байт, может заставите программу писать сразу инфу для регистра, в байтах, а не в String. Но это будет нечитабельно в блокноте, а вот в hex читалке всё увидите.Дончанин писал(а): 19 фев 2020, 09:37 Выходов будет много, все через сдвиговые регистры и переменные
[spoiler=Для примера - читабельные символы:] [/spoiler]
Отправлено спустя 2 минуты 46 секунд:
т.е.
0х1 0х2А 0х7F 0xA1 и т.д.
Все данные друг за другом, без пробелов, но с равным количеством символов на строку.
в 1024 байта влезет 8192 состояния, или 8 кадров для 1024 выходов, или...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Чтение данных с SD карты
Еще немного и мы разведем Александра на новый GRBL/Marlin....




Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
Смысл идеи -
создаём переменные "индекс кадра"(ИК) и "номер данных в кадре"(НДК).
Запускаем чтение с начала.
Если хотим считать кадр №0, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Для считывания 543 кадра:
Запускаем чтение с начала.
ИК =0, НДС = 0.
При каждом .read() +1 к НДК, пока НДК < данных в кадре, потом НДК = 0; ИК+1. Ничего никому не присваиваем.
Когда ИК = 543, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Вроде всё просто, учитывая, что чтение идёт через SPI, думаю за 0,2 сек не стоит беспокоиться.
Можно, конечно, и буфер вкорячить для уменьшения количества обращений к карте, но это уже при детальной доводке проекта.
создаём переменные "индекс кадра"(ИК) и "номер данных в кадре"(НДК).

Запускаем чтение с начала.
Если хотим считать кадр №0, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Для считывания 543 кадра:
Запускаем чтение с начала.
ИК =0, НДС = 0.
При каждом .read() +1 к НДК, пока НДК < данных в кадре, потом НДК = 0; ИК+1. Ничего никому не присваиваем.
Когда ИК = 543, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Вроде всё просто, учитывая, что чтение идёт через SPI, думаю за 0,2 сек не стоит беспокоиться.
Можно, конечно, и буфер вкорячить для уменьшения количества обращений к карте, но это уже при детальной доводке проекта.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- AlexCrane
- Капитан
- Сообщения: 903
- Зарегистрирован: 20 окт 2017, 13:22
- Откуда: Ульяновск
- Имя: Александр
- Поблагодарили: 12 раз
Чтение данных с SD карты
[ref]Дончанин[/ref], Попробуй
По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
, вдруг заработает...По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Чтение данных с SD карты
Да, конечно она может формировать массив как мне нужно. Вот еще думаю вместо ардуинки использовать ESP, там памяти больше.Sancho писал(а): 19 фев 2020, 15:39 Вы можете её заставить делать выход данных иначе, без пробелов, но с \n?
Будет намного проще с большими объёмами данных и обработкой.
Или так
*01010101011
*11010101010
и т.д. ?
Главное, что-бы файл по размеру бибка смогла осилить.
А вот про байты не очень понял. Я планировал приблизительно так (пример с UART),. Такая гирлянда работает как мне надо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Чтение данных с SD карты
Спасибо. очень интересно. Обязательно потестирую.AlexCrane писал(а): 19 фев 2020, 17:39 Дончанин, Попробуй
sd1.flp
(223.68 КБ) 5 скачиваний
, вдруг заработает...
По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
Для теста все светодиоды подключены к 595?Дончанин писал(а): 20 фев 2020, 09:33 А вот про байты не очень понял. Я планировал приблизительно так (пример с UART),. Такая гирлянда работает как мне надо.
Отправлено спустя 34 минуты 8 секунд:
Настрой блок под нужные пины и затести: Как её правильно тестить с помощью терминала тут - читать внимательно до конца!
Отправлять по одному байту.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Чтение данных с SD карты
Для теста я не использовал регистры и переменные, а указывал три пина ардуины, к ним подключены светодиоды. Ну и они соответственно мигали согласно кода, кстати код был с пробелами, но это не помешало, может скетч их игнорирует. А в своей программе без пробелов почему-то не получается сохранить. Странно, всегда добавляет пробел. Массив изначально формируется так:
for(i1 = 0; i1 < global.d; i1 += 1) {
for(j1 = 0; j1 < global.h; j1 += 1) {
mas2[i1,j1]=0;
}}
Ничего военного, но я это даже не замечал....
Отправлено спустя 7 минут 13 секунд:
В дальнейшем расширять буду или через 595 или через MCP23017. Думаю второй вариант более предпочтительнее.
for(i1 = 0; i1 < global.d; i1 += 1) {
for(j1 = 0; j1 < global.h; j1 += 1) {
mas2[i1,j1]=0;
}}
Ничего военного, но я это даже не замечал....
Отправлено спустя 7 минут 13 секунд:
В дальнейшем расширять буду или через 595 или через MCP23017. Думаю второй вариант более предпочтительнее.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Чтение данных с SD карты
[ref]Дончанин[/ref], Речь идёт о возможности чтения/передачи информации в компактном виде.
Ваш код выше - обнуляет двух-мерный массив.
Отправлено спустя 1 минуту 41 секунду:
Ваш код выше - обнуляет двух-мерный массив.
Отправлено спустя 1 минуту 41 секунду:
595 - быстрее, нет зависаний при потере связи, поставить можно 100500 штук.Дончанин писал(а): 20 фев 2020, 11:12 В дальнейшем расширять буду или через 595 или через MCP23017. Думаю второй вариант более предпочтительнее.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Чтение данных с SD карты
Спасибо за совет. Так и поступлю.
По поводу массива. Здесь он создается как таковой, с нулевыми значениями, а потом по определенным действиям и условиям заполняется как надо и вообще он создается в виде отдельного объекта. Данная программа написана в Game Maker Studio. Хоть движок и предназначен для игр, но это очень большой инструмент для написания разных вещей, плюс можно компилировать и на андроид, плюс дружит с ардуино, плюс простой скриптовый язык. Если их правильно увязывать, то можно делать обалденные проекты, "живые" игры. Поддерживается сом-порт, сеть, wi-fi. Блютуз, вроде как нет.
Вот окно программы. Мышкой заполняются нужные ячейки. Затем это можно проиграть и выводить в сом-порт, а можно сохранить в файл.
Но это так, лирическое отступление.
По поводу массива. Здесь он создается как таковой, с нулевыми значениями, а потом по определенным действиям и условиям заполняется как надо и вообще он создается в виде отдельного объекта. Данная программа написана в Game Maker Studio. Хоть движок и предназначен для игр, но это очень большой инструмент для написания разных вещей, плюс можно компилировать и на андроид, плюс дружит с ардуино, плюс простой скриптовый язык. Если их правильно увязывать, то можно делать обалденные проекты, "живые" игры. Поддерживается сом-порт, сеть, wi-fi. Блютуз, вроде как нет.
Вот окно программы. Мышкой заполняются нужные ячейки. Затем это можно проиграть и выводить в сом-порт, а можно сохранить в файл.
Но это так, лирическое отступление.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя