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

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

Чтение данных с 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
Можно и без символа переноса строки.
Спасибо
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

Смотрите пользовательские блоки в соответствующем разделе. М. б. найдете для себя решение.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

[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
Зачем столько лишнего?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

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

Сообщение Дончанин »

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

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

Отправлено спустя 12 минут 59 секунд:
Через юарт все получается программа отсылает данные строчками, ардуинка ловит и реагирует. А вот автономно не получается....
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

Дончанин писал(а): 19 фев 2020, 09:37 В пользовательском разделе к сожалению ничего не нашел
Попробуйте "допилить" это. Или Александр может поможет.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

[ref]Дончанин[/ref],
Сегодня думал написать блоки работы с SD для esp32,
как раз просматриваю стандартные библиотеки для них.
В вашем варианте (на данный момент) вижу 1 вариант.
Если строка не длинная, (меньше 512байт)
записывать каждую строку в свой файл, именам дать номера, и по ним делать выборку.
Win10-64, FLProg (portable)
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

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

Сообщение Дончанин »

Спасибо. но не совсем удобный вариант. Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
Может что-то на примере этого:
https://vk.com/topic-5409517_27662496
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

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

Сообщение rw6cm »

Дончанин писал(а): 19 фев 2020, 12:41 Получится около 1000 отдельных файлов на один файл. А файлов планирую не один.
Можно файлы в разных папках хранить, и выбирать по директории,
а так надо с многомерными массивами уметь работать, в флп этого нет,
значит писать под каждую задачу свой блок, а это еще то занятие с таким не гибким инструментарием ))
Win10-64, FLProg (portable)
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Есть идея, вчера пришла в голову....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
com
Капитан
Сообщения: 832
Зарегистрирован: 31 май 2018, 22:12
Откуда: Санкт-Петербург
Имя: Ринат

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

Сообщение com »

[ref=#ff8000]Sancho[/ref], :smile14:
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Отправлено спустя 4 минуты 24 секунды:
Дончанин писал(а): 19 фев 2020, 09:37 Выходов будет много, все через сдвиговые регистры и переменные
Учитывая, что в регистр пишется байт, может заставите программу писать сразу инфу для регистра, в байтах, а не в String. Но это будет нечитабельно в блокноте, а вот в hex читалке всё увидите.
[spoiler=Для примера - читабельные символы:]
screenshot_20-02-19_16-42-05.png
[/spoiler]

Отправлено спустя 2 минуты 46 секунд:
т.е.
0х1 0х2А 0х7F 0xA1 и т.д.
Все данные друг за другом, без пробелов, но с равным количеством символов на строку.
в 1024 байта влезет 8192 состояния, или 8 кадров для 1024 выходов, или...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

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

Сообщение Ingwar »

Еще немного и мы разведем Александра на новый GRBL/Marlin.... :smile171: :smile171: :smile171:
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Смысл идеи -
создаём переменные "индекс кадра"(ИК) и "номер данных в кадре"(НДК). :)
Запускаем чтение с начала.
Если хотим считать кадр №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 карты

Сообщение AlexCrane »

[ref]Дончанин[/ref], Попробуй
sd1.flp
, вдруг заработает...

По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

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

Сообщение Дончанин »

Sancho писал(а): 19 фев 2020, 15:39 Вы можете её заставить делать выход данных иначе, без пробелов, но с \n?
Будет намного проще с большими объёмами данных и обработкой.
Или так
*01010101011
*11010101010
и т.д. ?
Главное, что-бы файл по размеру бибка смогла осилить.
Да, конечно она может формировать массив как мне нужно. Вот еще думаю вместо ардуинки использовать ESP, там памяти больше.
А вот про байты не очень понял. Я планировал приблизительно так (пример с UART),. Такая гирлянда работает как мне надо.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

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

Сообщение Дончанин »

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

По задумке блок больше заточен под произвольную выборку строк, если читать последовательно нужно делать по другому
Спасибо. очень интересно. Обязательно потестирую.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Отправлено спустя 34 минуты 8 секунд:
Настрой блок под нужные пины и затести:
Заготовка UART-Byte_v01 .flp
Как её правильно тестить с помощью терминала тут - читать внимательно до конца!
Отправлять по одному байту.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

Чтение данных с 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. Думаю второй вариант более предпочтительнее.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

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

Отправлено спустя 1 минуту 41 секунду:
Дончанин писал(а): 20 фев 2020, 11:12 В дальнейшем расширять буду или через 595 или через MCP23017. Думаю второй вариант более предпочтительнее.
595 - быстрее, нет зависаний при потере связи, поставить можно 100500 штук.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Дончанин
Рядовой
Сообщения: 80
Зарегистрирован: 08 ноя 2017, 11:31
Откуда: Донецк

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

Сообщение Дончанин »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя