Чтение данных с SD карты

Есть ли возможность.....

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#1

Сообщение Дончанин » 18.02.2020{, 14:01}

Всем добрый день. Подскажите пожалуйста, есть ли возможность считывания данных с 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
Можно и без символа переноса строки.
Спасибо

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD карты

#2

Сообщение Ingwar » 18.02.2020{, 15:16}

Смотрите пользовательские блоки в соответствующем разделе. М. б. найдете для себя решение.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#3

Сообщение Sancho » 18.02.2020{, 16:24}

Дончанин, написать пб думаю не сложно.
Вопрос в том, как Вы собираетесь организовывать запись данных на карту - это влияет на процесс их получения.

Отправлено спустя 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, если что. запомните на всякий. многие знают номер тлф.

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#4

Сообщение Дончанин » 19.02.2020{, 09:24}

В пользовательском разделе к сожалению ничего не нашел, есть только эта ссылка, но блока там нет:
http://elref.ru/forum/11-46-1

Запись данных на карту будет обычным способом, вручную с компьютера через картридер. Данный код формирует моя программа на компьютере. Длина строки будет гораздо больше. И важно именно так. Потому что далее, ардуинка определяет каждый символ в строке и если он 1, то открывается соответствующий пин, если 0, то, соответственно пин молчит. Спустя 0.2 сек, ардуинка должна перейти на новую строку и в зависимости от данных переключить пины. Выходов будет много, все через сдвиговые регистры и переменные. Да и сам код около 1000 строк.

Отправлено спустя 12 минут 59 секунд:
Через юарт все получается программа отсылает данные строчками, ардуинка ловит и реагирует. А вот автономно не получается....

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD карты

#5

Сообщение Ingwar » 19.02.2020{, 10:04}

Дончанин писал(а):
19.02.2020{, 09:37}
В пользовательском разделе к сожалению ничего не нашел
Попробуйте "допилить" это. Или Александр может поможет.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Чтение данных с SD карты

#6

Сообщение rw6cm » 19.02.2020{, 11:17}

Дончанин,
Сегодня думал написать блоки работы с SD для esp32,
как раз просматриваю стандартные библиотеки для них.
В вашем варианте (на данный момент) вижу 1 вариант.
Если строка не длинная, (меньше 512байт)
записывать каждую строку в свой файл, именам дать номера, и по ним делать выборку.
Win10-64, FLProg (portable)

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#7

Сообщение Дончанин » 19.02.2020{, 12:41}

Спасибо. но не совсем удобный вариант. Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
Может что-то на примере этого:
https://vk.com/topic-5409517_27662496

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Чтение данных с SD карты

#8

Сообщение rw6cm » 19.02.2020{, 13:19}

Дончанин писал(а):
19.02.2020{, 12:41}
Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
Можно файлы в разных папках хранить, и выбирать по директории,
а так надо с многомерными массивами уметь работать, в флп этого нет,
значит писать под каждую задачу свой блок, а это еще то занятие с таким не гибким инструментарием ))
Win10-64, FLProg (portable)

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#9

Сообщение Sancho » 19.02.2020{, 13:44}

Есть идея, вчера пришла в голову....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

Чтение данных с SD карты

#10

Сообщение com » 19.02.2020{, 14:44}

Sancho, :smile14:

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#11

Сообщение Sancho » 19.02.2020{, 15:32}

com писал(а):
19.02.2020{, 14:44}
Sancho, :smile14:
Не уловил....
Дончанин писал(а):
19.02.2020{, 09:37}
Данный код формирует моя программа на компьютере.
Вы можете её заставить делать выход данных иначе, без пробелов, но с \n?
Будет намного проще с большими объёмами данных и обработкой.
Или так
*01010101011
*11010101010
и т.д. ?
Главное, что-бы файл по размеру бибка смогла осилить.

Отправлено спустя 4 минуты 24 секунды:
Дончанин писал(а):
19.02.2020{, 09:37}
Выходов будет много, все через сдвиговые регистры и переменные
Учитывая, что в регистр пишется байт, может заставите программу писать сразу инфу для регистра, в байтах, а не в String. Но это будет нечитабельно в блокноте, а вот в hex читалке всё увидите.
Для примера - читабельные символы:Показать
screenshot_20-02-19_16-42-05.png
Отправлено спустя 2 минуты 46 секунд:
т.е.
0х1 0х2А 0х7F 0xA1 и т.д.
Все данные друг за другом, без пробелов, но с равным количеством символов на строку.
в 1024 байта влезет 8192 состояния, или 8 кадров для 1024 выходов, или...
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Чтение данных с SD карты

#12

Сообщение Ingwar » 19.02.2020{, 15:40}

Еще немного и мы разведем Александра на новый GRBL/Marlin.... :smile171: :smile171: :smile171:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#13

Сообщение Sancho » 19.02.2020{, 15:57}

Смысл идеи -
создаём переменные "индекс кадра"(ИК) и "номер данных в кадре"(НДК). :)
Запускаем чтение с начала.
Если хотим считать кадр №0, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Для считывания 543 кадра:
Запускаем чтение с начала.
ИК =0, НДС = 0.
При каждом .read() +1 к НДК, пока НДК < данных в кадре, потом НДК = 0; ИК+1. Ничего никому не присваиваем.
Когда ИК = 543, заполняем наши переменные для регистров нужным количеством данных, т.е. при каждом .read() +1 к НДК, пока НДК < данных в кадре, потом стоп.
Вроде всё просто, учитывая, что чтение идёт через SPI, думаю за 0,2 сек не стоит беспокоиться.
Можно, конечно, и буфер вкорячить для уменьшения количества обращений к карте, но это уже при детальной доводке проекта.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

Чтение данных с SD карты

#14

Сообщение AlexCrane » 19.02.2020{, 17:39}

Дончанин, Попробуй
sd1.flp
(223.68 КБ) 58 скачиваний
, вдруг заработает...

По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#15

Сообщение Дончанин » 20.02.2020{, 09:33}

Sancho писал(а):
19.02.2020{, 15:39}
Вы можете её заставить делать выход данных иначе, без пробелов, но с \n?
Будет намного проще с большими объёмами данных и обработкой.
Или так
*01010101011
*11010101010
и т.д. ?
Главное, что-бы файл по размеру бибка смогла осилить.
Да, конечно она может формировать массив как мне нужно. Вот еще думаю вместо ардуинки использовать ESP, там памяти больше.
А вот про байты не очень понял. Я планировал приблизительно так (пример с UART),. Такая гирлянда работает как мне надо.
Вложения
Sd.flp
(157.29 КБ) 49 скачиваний

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#16

Сообщение Дончанин » 20.02.2020{, 09:37}

AlexCrane писал(а):
19.02.2020{, 17:39}
Дончанин, Попробуй
sd1.flp
(223.68 КБ) 5 скачиваний
, вдруг заработает...

По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
Спасибо. очень интересно. Обязательно потестирую.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#17

Сообщение Sancho » 20.02.2020{, 09:50}

Дончанин писал(а):
20.02.2020{, 09:33}
А вот про байты не очень понял. Я планировал приблизительно так (пример с UART),. Такая гирлянда работает как мне надо.
Для теста все светодиоды подключены к 595?

Отправлено спустя 34 минуты 8 секунд:
Настрой блок под нужные пины и затести:
Заготовка UART-Byte_v01 .flp
(291.76 КБ) 47 скачиваний
Как её правильно тестить с помощью терминала тут - читать внимательно до конца!
Отправлять по одному байту.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#18

Сообщение Дончанин » 20.02.2020{, 11:05}

Для теста я не использовал регистры и переменные, а указывал три пина ардуины, к ним подключены светодиоды. Ну и они соответственно мигали согласно кода, кстати код был с пробелами, но это не помешало, может скетч их игнорирует. А в своей программе без пробелов почему-то не получается сохранить. Странно, всегда добавляет пробел. Массив изначально формируется так:

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.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Чтение данных с SD карты

#19

Сообщение Sancho » 20.02.2020{, 11:13}

Дончанин, Речь идёт о возможности чтения/передачи информации в компактном виде.
Ваш код выше - обнуляет двух-мерный массив.

Отправлено спустя 1 минуту 41 секунду:
Дончанин писал(а):
20.02.2020{, 11:12}
В дальнейшем расширять буду или через 595 или через MCP23017. Думаю второй вариант более предпочтительнее.
595 - быстрее, нет зависаний при потере связи, поставить можно 100500 штук.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08.11.2017{, 11:31}
Репутация: 0
Откуда: Донецк

Чтение данных с SD карты

#20

Сообщение Дончанин » 20.02.2020{, 13:04}

Спасибо за совет. Так и поступлю.
По поводу массива. Здесь он создается как таковой, с нулевыми значениями, а потом по определенным действиям и условиям заполняется как надо и вообще он создается в виде отдельного объекта. Данная программа написана в Game Maker Studio. Хоть движок и предназначен для игр, но это очень большой инструмент для написания разных вещей, плюс можно компилировать и на андроид, плюс дружит с ардуино, плюс простой скриптовый язык. Если их правильно увязывать, то можно делать обалденные проекты, "живые" игры. Поддерживается сом-порт, сеть, wi-fi. Блютуз, вроде как нет.
Вот окно программы. Мышкой заполняются нужные ячейки. Затем это можно проиграть и выводить в сом-порт, а можно сохранить в файл.
Но это так, лирическое отступление.
Вложения
2020-02-20_130216.jpg
Окно программы

Ответить

Вернуться в «Спросить у знатоков»