W5100+SD вывод картинки из SD в браузер
- Войдите на сайт для отправки комментариев
Вс, 13/09/2015 - 21:56
Здравствуйте
собственно в заголовке и сформулирован вопрос
конечно можно подсунуть браузеру картинку с внешнего ресурса
Но хочется подсовывать картинки из SD- шки
четто искал искал и ничего не нашел, все заморачиваются только выводом на разные дисплеи.
кинте ссылкой , кто встречал тему
Вывод картинки в браузер ничем не отличается от вывода в браузер html-файла.
Ваш Ардуино-сервер, получив и распарсив запрос, просто отдает клиенту (браузеру) то, что он просит.
Спасибо конечно, ответ очевиден, дьявол как всегда в мелочах кроется.
Вопрос в том, как осуществить пересылку файла с SD в клиентпринт или клиентврайт, в каком формате должен быть файл.
И собственно если кто то встречал примеры просьба кинуться ссылкой, или поисковым контекстом, мне нечего найти не удалось по этому вопросу.
Дьявол можент крыться в вашем ТЗ. А так - никаких серьезных нюансов.
Если конечно мы говорим об одном и том-же.
Дьявол можент крыться в вашем ТЗ. А так - никаких серьезных нюансов.
Если конечно мы говорим об одном и том-же.
карты таро говорят: так-так-так... похоже нужна ссылка на ресурс, где обсуждают пересылку данных с SD в браузер....
я не встречал...
но, вот передача данных в браузер и чтение с SD гдето было, правда это уже 2 разные темы :)
хмм тогда какого нюанса не хватает ?
пытаюсь передать файл с SD в браузер, никак не соображу, как указать, что это картинка по аналогии с img src=
Только вот в качестве пути src что указывать то, файловой системы то нет.
с print аутстринга проблем нет. С внешнего урла картинка тоже погружается без проблем, неужели с SD это невозможно ?
результат тут , аутстринг заканчивается звездочкой
у меня есть дурное предчуствие, что на стороне браузера этот, фактически массив, должен принимать какой-нибудь javascript :)
или я вообще не в ту сторону смотрю, куда надо ?
Хм...в книге по РНР и майсиквеле рассматривался вариант хранения аватаров в базе майсиквела в двоичном формате, для отображения там сначала передавали заголовок типа йа фото а потом массив данных
Не в тусторону смотрите.
Клиент обращается к серверу, с просьбой показать конкретный файл. Если имя файла не указано - тогда это имя принимается на усмотрение сервера, но обычно index.php, index.htm, index.html и т.д. Допустим вы (Ардуино) отдали клиенту файл index.htm. В этом файле встречается строка " img src=image.gif", тогда клиент снова обращается к Ардуино с просьбой отдать ему файл image.gif. И он (клиент) уже сам отобразит этот файл.
Задача сервера - отвечать на запросы клиента.
У вас скорее всего реализован частный случай - отдавать одну и туже информацию клиенту на любой запрос. Т.е. запрос клиента не разбирается (не парсится) а Ардуино реагирует на сам факт обращения.
Ваша задача - сделать парсинг GET-запросов. Т.е. вам нужно узнавать, какой именно файл просит клиент и этот файл уже отдавать.
Запросы я парсю, именно так реализованы кнопки управления здесь
Хмм если я указал в BODY src=test1.gif то полагаю клиент ждет именно этот файл и он подхватывается по указанному в src локальному или внешнему пути. Но ведь в арде пути как такового нет
вариант client.print(myFile); и client.print("<img src=test1.gif>"); после открытия файла не прокатили
Поэтому и оставалось пересылать побайтово, а на стороне клиента для этого потока не оказалось обработчика.
вариант в коде моего предыдущего поста отсылает побайтово весь гиф, только вот клиент не понимает, что это картинка.
Насколько я понимаю в чистом html есть единственный способ запостить изображение - подать клиенту сигнал, что это картинка тэгом img
Или Вы имеете в виду что то вроде этого
из этого вот это :
прокатило, однако оно выволит картинку на отдельной странице
ок, получилось
создаем сервер по порту 1 и засылаем им
создаем сервер по порту 2 и засылаем им основную страницу :
тэгом img ссылаемся на тот же IP с портом1 , где слушает сервер , отсылающий картинку, далее бравзер сам ее запрашивает и получает
результат по-прежнему тут , щас только вот еще один порт проброшу через роутер...пробросил
Вы "Горе от ума" читали?
Хмм если я указал в BODY src=test1.gif то полагаю клиент ждет именно этот файл и он подхватывается по указанному в src локальному или внешнему пути. Но ведь в арде пути как такового нет
Что значит подхватывается? Клиент не умеет сам брать, он может попросить, а отдаст сервер.
Когда клиент видит код вставки картинки он посылает по указанному адресу, HTTP запрос, а сервер перешлет ему эту картинку, если это возможно.
Повторю - клиент пошлет еще один запрос (Ардуино увидит "new client"). И каждый раз будет посылать новый запрос, если ему нужно что-то "подхватить".
Вот то, что нужно: https://github.com/ovidiucp/TinyWebServer
Есть видео http://www.youtube.com/watch?v=qZXKk6nCYuM
Я с помощью этой библиотеки делал http://robocraft.ru/blog/3126.html
У меня на google disk есть вторая версия своего проекта, если есть желание можете посмотреть.
TinyWebServer отдает любые файлы с флешки.
То Gippopotam спасибо, собственно это я и сделал в итоге.
То GraninDM спасибо.
Главной проблемой было непонимание того, что указывать в качестве пути в тэге img и как запрашиваемое в нем отдавать. В результате помог инструмент разработчика в хроме. Когда я отправил только картинку
03
client2.println(
"Content-Type: image/gif"
);
то инструментом разработчика увидел, куда сформирован запрос на ее получение, что собственно и стало главной подсказкой.
При использовании TinyWebServer ваш скетч будет в 5 раз меньше и понятнее.
Кто помнит, как назывался топик, где человек выложил вебморду с каким то теплоузлом и накидаными на него значениями?
Там кажется еще можно было светики включать/выключать.
> #include <SD.h>
По идее и с SdFat должно завестись.
Кто помнит, как назывался топик, где человек выложил вебморду с каким то теплоузлом и накидаными на него значениями?
Там кажется еще можно было светики включать/выключать.
http://arduino.ru/forum/programmirovanie/arduinoethernethtml
Спасибо, но ето не она, там фотка была выложена в инете и поверх нее выводились значения