поиск слова на SD карте

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

genia1991 пишет:

я проверил свой скетч 9 пост. вроде идеально работает )

мин 10 тестил никаких глюков пока не заметил. Тестил без основного кода. так что поиск этот еще надо будет прицепить на клавиатуру.

но отдельно код заработал.

кто  тут писал что работать не будет? :)

 

Есть такой человек - Алекс Гайвер. У него тоже - код вроде работает, но - до случая. Не уподобляйтесь ему, пожалуйста. Для проверки "работоспособности" вашего кода - закиньте на SD файл размером килобайт 10, всего навсего. И отпишитесь - как, работает? Не виснет ардуинка-то бедная? Необходимые вводные для понимания: объём оперативной памяти, доступный для выбранного вами МК ;)

Ну как - рабочий код, или - условно рабочий, пока жареный гайвер в темя не клюнет?

genia1991
Offline
Зарегистрирован: 25.12.2019

DIYMan пишет:

genia1991 пишет:

я проверил свой скетч 9 пост. вроде идеально работает )

мин 10 тестил никаких глюков пока не заметил. Тестил без основного кода. так что поиск этот еще надо будет прицепить на клавиатуру.

но отдельно код заработал.

кто  тут писал что работать не будет? :)

 

Есть такой человек - Алекс Гайвер. У него тоже - код вроде работает, но - до случая. Не уподобляйтесь ему, пожалуйста. Для проверки "работоспособности" вашего кода - закиньте на SD файл размером килобайт 10, всего навсего. И отпишитесь - как, работает? Не виснет ардуинка-то бедная? Необходимые вводные для понимания: объём оперативной памяти, доступный для выбранного вами МК ;)

Ну как - рабочий код, или - условно рабочий, пока жареный гайвер в темя не клюнет?

тот чувак с ютуба? )

да смотрю иногда его. завтра проверю файлик на 10 кб.

Добавлю только что я использую код поиска строчку за строчкой. я не выгружаю весь файл в память ардуино :)

работает  так:

1 строчку загрузил проверил ее через поиск. потом другую строку беру опять проверяю ее и так далее ))

Вроде делаю ок )

вот только сколько по времени 10 кб файлик займет времени на поиск?  

 

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

genia1991 пишет:

 

Добавлю только что я использую код поиска строчку за строчкой. я не выгружаю весь файл в память ардуино :)

Ваш код из #9 с этим не согласен. Там читается содержимое ВСЕГО файла в одну переменную типа String, отжирая всю оперативку, при необходимости. Если это только часть кода (про построчное чтение упоминается, но кода построчного чтения - не видно) - то тогда нужен полный код, чтобы посмотреть, как оно у вас там устроено.

В любом случае - даже код построчного чтения - может быть, как у гайвера, т.е. нерабочим при определённых условиях. Например, сходу предложу скормить вашему коду файл, где нет ни одного перевода строки, т.е. существует только одна строка длиной в 5000 символов ;)

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

genia1991 пишет:

 

вот только сколько по времени 10 кб файлик займет времени на поиск?  

 

При продвинутых методах поиска (а не в лоб) - доли секунды.

b707
Offline
Зарегистрирован: 26.05.2017

дел

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

genia1991 пишет:

вот только сколько по времени 10 кб файлик займет времени на поиск?  

Строго говоря - в интернете, помимо порнухи - есть всё. Применительно к вашей задаче, чтобы вы поняли всю мощь разных подходов, и для чего высоколобые дядьки морщат этот самый лоб - вот вам, на прочтение: https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8

genia1991
Offline
Зарегистрирован: 25.12.2019

DIYMan пишет:

genia1991 пишет:

 

Добавлю только что я использую код поиска строчку за строчкой. я не выгружаю весь файл в память ардуино :)

 Там читается содержимое ВСЕГО файла в одну переменную типа String, отжирая всю оперативку, при необходимости.

хотел спросить. 1 символ = 1 байту памяти?

1000 символов примерно получается 1 кб памяти ?

завтра обязательно проверю и отпишусь.

 

а как можно кстати добавить 32 кнопки еще дополнительно к ардуино?

может взять другую ардуино и подключить на нее только кнопки?

кнопки это модуль на 16 штук и 8 выводов. хватит ли ардуино входов?  

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DIYMan пишет:
в интернете, помимо порнухи - есть всё.
But кому оно всё здесь нахрен нужно? :-)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DIYMan пишет:

Есть такой человек - Алекс Гайвер. 

Руки прочь от великого гуру!

Он тут гиверкоре написал. Я глянул краем глаза (всего два файлика по диагонали) и отметил у поциента существенный прогресс по сравнению с его появлением здесь (или может это тот второй парень прогресс обеспечил?).

Не то, чтобы ляпов фич стало меньше, но они поменяли характер. Раньше у него были ляпы фичи как у архата, а теперь - как у ложика. Т.е. уровень поднялся с "безграмотный" до "полуграмотный", а это уже прогресс, разве нет?

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

genia1991 пишет:
да смотрю иногда его.
Маладец!

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

genia1991 пишет:

хотел спросить. 1 символ = 1 байту памяти?

необязательно, зависит от способа представления символов. В UTF-8, например, одному символу может соответствовать несколько байт. Но не берите это в голову, в вашем случае, пока ищете только латинский алфавит, один символ - равен одному байту, как частный случай.

genia1991 пишет:

а как можно кстати добавить 32 кнопки еще дополнительно к ардуино?

может взять другую ардуино и подключить на нее только кнопки?

кнопки это модуль на 16 штук и 8 выводов. хватит ли ардуино входов?  

А давайте вы сначала с поиском строки разберётесь?

b707
Offline
Зарегистрирован: 26.05.2017

DIYMan пишет:

А давайте вы сначала с поиском строки разберётесь?

так он уже разобрался, разве нет? :)))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ворота пишет:

Не то, чтобы ляпов фич стало меньше, но они поменяли характер. 

Приведи примеры, пж ;) Я твоему оценочному суждению доверяю, а самому просматривать - честно, лень :) Но в курсе-то хочется быть :))

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

b707 пишет:

DIYMan пишет:

А давайте вы сначала с поиском строки разберётесь?

так он уже разобрался, разве нет? :)))

:))) Ну да, ну да, разобрался. И про Бойера-Мура почитал, и понял, насколько алгоритмически убог метод поиска "в лоб". И сделал (или нашёл) реализацию Бойера-Мура. Эээх, если бы это было правдой...

Я ж не зря про тест-кейсы писал: обдумывание пограничных условий использования, как минимум - приучает к строгости мышления и полноте оценки задачи. Без этого - получается "ну я по строчке вычитываю, и ищу там". А когда спрашиваешь человека - "а если условная строчка - длиной в 1М символов?", то оказывается, что да - "разобрался" :)))

Кнута на них не хватает. Причём Кнут здесь - и фамилия, и средство наказания. К слову, считаю Кнутовское "Искусство программирования"  - просто фундаментальнейше полезным трудом. Хотя бы по той причине, что этими томами можно легко отх@ячить до полусмерти нерадивого студиозуса :)))

З.Ы. Ещё Вирта с его "Алгоритмы и структуры данных" надо на подмогу ;)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DIYMan пишет:

Приведи примеры, пж ;) 

Не вопрос, но я очень мало смотрел (пару файлов и то по диагонали), подробно смотреть время нужно, гивер мне за это не платит.

1.
Файл time_init.cpp, строка 107. ADC настраивается с делителем 4.  Т.е. на даташит наплевали, вместо десятиразрядного АЦП получили хорошо, если восьмиразрядный. Зато можно кричать, что у нас работает быстрее, чем у тупых авторов wiring. Точно такая ошибка фича была у ложика (почему я и сравнил), от тогда ужом вывернулся, что мол: "а мне и не нужна была полная разрядность, мне хватало меньшей, а так быстрее". Но здесь такая отмаза не прокатит - это не конкретная задача а универсальное ядро, так таки ляп - не фича :-)

2.
При заявленной на сайте производителя совместимости ("Ядро полностью совместимо с остальными библиотеками, ничего из стандартных функций не вырезано" в файле pinOperation.cpp видим

void analogWrite(uint8_t pin, int val) {
	if (val == 0) {
		digitalWrite(pin, 0);
		return;
	}
...

в то время, как в оригинальном wiring_analog.c было

void analogWrite(uint8_t pin, int val)
{
	pinMode(pin, OUTPUT);
	if (val == 0)
	{
		digitalWrite(pin, LOW);
	}
	else if (val == 255)
	{
		digitalWrite(pin, HIGH);
	}
......

ну, и где совместимость при значении 255?

3.
Ещё один баг в предыдущем куске кода. Они выбросили установку пина в OUTPUT. Конечно, они могут сказать, что требуют от юзера, чтобы он сам это делал, но 1) нигде не сказали; 2) опять же, где обещанная совместимость?

Дальше я не смотрел, всё уже понятно, чего время терять? Могу лишь добавить забавность про его функцию micros (файл time_init.cpp, строки 35-45). Это же надо так - вычислять в unsigned, принудительно заменить на signed, чтобы тут же вернуть это ретурном, который возвращает опять же unsigned! "На скорость не влияет", но об общем уровне грамотности говорит наглядно.

sadman41
Offline
Зарегистрирован: 19.10.2016

А ядро для чего - с пушки палить?

С аналограйтом странно, действительно - зачем что-то одно вырезать, сыканомили бы ещё на "нулевом" условии.

genia1991
Offline
Зарегистрирован: 25.12.2019

А давайте вы сначала с поиском строки разберётесь?

[/quote]

надо будет на SD через ардуино записывать 10 кб а то некуда вставить флешку )

картридер что то не работает. через ардуинку чего нибудь наспамлю :)

 

genia1991
Offline
Зарегистрирован: 25.12.2019

Ворота пишет:

DIYMan пишет:

Приведи примеры, пж ;) 

1.
Файл time_init.cpp, строка 7. ADC настраивается с делителем 4.  Т.е. на даташит наплевали, вместо десятиразрядного АЦП получили хорошо, если восьмиразрядный. Зато можно кричать, что у нас работает быстрее, чем у тупых авторов wiring. Точно такая ошибка фича была у ложика (почему я и сравнил), от тогда ..........................

та лучше не отвлекаться. моя тема же интереснее )

сосредоточимся лучше на ней :)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

genia1991 пишет:

та лучше не отвлекаться. моя тема же интереснее )

Тебе - дурачку уже всё сказали

DIYMan пишет:

вам прямая дорога к: взять и начать читать учебник по С++. 

Ты же упираешься рогом "лишь бы чего не узнать случайно! Дай-ка я вытяну из них клещами готовое решение. Только бы ничему не научиться!".

Ты правда думаешь, что ты такой кому-то интересен? Сильно ошибаешься.

Исчезни сейчас и приходи с хорошими знаниями КиР, например, тогда с тобой будет интересно.

genia1991
Offline
Зарегистрирован: 25.12.2019

Ворота пишет:

genia1991 пишет:

та лучше не отвлекаться. моя тема же интереснее )

Тебе - дурачку уже всё сказали

DIYMan пишет:

вам прямая дорога к: взять и начать читать учебник по С++. 

Ты же упираешься рогом "лишь бы чего не узнать случайно! Дай-ка я вытяну из них клещами готовое решение. Только бы ничему не научиться!".

Ты правда думаешь, что ты такой кому-то интересен? Сильно ошибаешься.

Исчезни сейчас и приходи с хорошими знаниями КиР, например, тогда с тобой будет интересно.

 

так я же написал что проверю. сейчас нет возможности это сделать.

завтра отпишусь

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Ворота пишет:

Это же надо так - вычислять в unsigned, принудительно заменить на signed, чтобы тут же вернуть это ретурном, который возвращает опять же unsigned! 

Ну то есть в консерватории нихера не поменялось, по прежнему смычком долбят по барабану. Так и запишем :)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

genia1991 пишет:

так я же написал что проверю. сейчас нет возможности это сделать. завтра отпишусь

Простите, перечитайте ещё раз, что Вам умный и опытный человек порекомендовал делать

DIYMan пишет:

взять и начать читать учебник по С++. 

Тут есть что-нибудь про "проверю" или про "завтра"?

Делайте, что Вам говорят, иначе так и останетесь здесь не равным собеседником. а объектом для глума и насмешек.

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

DIYMan пишет:

Ну то есть в консерватории нихера не поменялось

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