Чтения данных из WWW
- Войдите на сайт для отправки комментариев
Чт, 19/07/2012 - 14:00
Здравствуйте коллеги, у меня вопрос. Хочу сделать такую вещь: на сайте есть РНР страница которая возвращает число от 0 до 9999 и есть ардуино которое через w5100 подключен к сайту и с LCD дисплеем, я хочу чтобы это число отображалось на дисплее с частотой раз в минуту. Подскажите как реализовать считывание данных с странички?
Тестовым примером из библиотеки Ethernet. Только поправьте адрес гугла на свой хост.
Ну, еще конечно, придеться парсить ответ сервера, чтоб вытащить искомое число. Как то так.
На дисплей тоже есть библиотечки с примерами. Соеденяйте! =)
да точно ;) спасибо)))
Кстати делаю похожую вещь, если у вас полуичтся, напишите плз сюда как получилось
хорошо, если не потеряю вас из виду, или оставте свои контакты
хорошо, если не потеряю вас из виду, или оставте свои контакты
link26 имел ввиду, скорее всего, не что "лично ему нужно", а "для будущих других". Типа думать о других, возможно будущих. Так что такие вещи "лучше сюда", а не в контакты.
>Ну, еще конечно, придеться парсить ответ сервера,
Общая идея "парсинга" ответа проста как угол дома (если не нужно проверять заголовки и т.п.). Найти "тело" самого ответа и в этом теле найти "интересующую инфу". Со вторым пунктом, конечно, уже зависит от конкретного случае а с первым - несложно.
По протоколу http признаком "конца заголовка ответа" (вообщем конец служебной инфы) являтся пусткая строка. Строка содержащая только "перевод строки" и больше ничего. Вообщем нужно найти первую подобную строку. Все что "дальше" - искомое тело (то что мы видим нажимая View Source в браузере).
Примерно так (просьба не плеватся на качество кода, не оптимален и крив... пока еще не проходил стадии codeReview и refactoring)
На входе у нас reply - ответ сервера, на выходе bodyFound - признак получилось-ли найти тело, body - строка с ответом без служебной информации. Писалось для другого чипа, но подход тут не сильно отличается.
Иногда на "поиск тела" можно "забить". Например если в ответе нужно найти подстроку "SomeData=132", то можно тупо ее искать сразу во всем "ответе целиком". не заморчиваесь "разделением". Где найдется там и найдется.
И еще порекомендую к использованию такую тулзу как http://fiddler2.com/fiddler2/ - помогает подергать сервер, посмотреть что ему шлется "в сыром виде" и как он "отвечает", поигратся с заголовками и т.п. мденьню.
А еще многие сайты сейчас имеют всякие API. И уменю отвечать в JSON формате - его легче парсить чем "настоящий html". Можно загуглить "arduino json"
Ну либо, если сервер собственный, то можно изначально отвечать "как можно проще". С оглядкой на то как это легче парсить на ардуине.
Если хочется и "и браузером и ардуиной", можно, при запросе, посылать заголовки указывающие что "это арудуина" (User-Agent:arduino и Accept:text/plain), тогда обычному браузеру можно отдавать "красивый html", а ардуине "жутко упрощенную версию".
Я, в своем проекте, так и делаю - если запрос пришел от браузера - отдают xml (удобней читать глазами), если от javascript-а - отдаю ему данные в виде json, от ардуины - просто текстовую строку, максимально упрощенную.