Формирование запроса
- Войдите на сайт для отправки комментариев
Пт, 29/11/2013 - 23:54
Доброго всем времени суток.
Нужен Ваш совет;)
Нужно получить показания с аналогового входа ардуины на PHP сервере. К ардуине подцеплен потенциометр.
Поднял Apache и MySql... там все настроил, что бы на страничке отобразилось значение нужно, что бы с ардуины прошел следующий запрос:
http://192.168.0.20/test2/index.php/main/save/10
где 10 это значение с аналогового входа на ардуине....
Помогите пожалуйста правильно сформировать этот запрос.... как не пробывал, почему то запрос не уходит... смотрел по примеру webclient^
#include <SPI.h> #include <Ethernet.h> // Enter a MAC address for your controller below. // Newer Ethernet shields have a MAC address printed on a sticker on the shield byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: //IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) char server[] = "www.google.com"; // name address for Google (using DNS) // Set the static IP address to use if the DHCP fails to assign IPAddress ip(192,168,0,177); // Initialize the Ethernet client library // with the IP address and port of the server // that you want to connect to (port 80 is default for HTTP): EthernetClient client; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for Leonardo only } // start the Ethernet connection: if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); // no point in carrying on, so do nothing forevermore: // try to congifure using IP address instead of DHCP: Ethernet.begin(mac, ip); } // give the Ethernet shield a second to initialize: delay(1000); Serial.println("connecting..."); // if you get a connection, report back via serial: if (client.connect(server, 80)) { Serial.println("connected"); // Make a HTTP request: client.println("GET /search?q=arduino HTTP/1.1"); client.println("Host: www.google.com"); client.println("Connection: close"); client.println(); } else { // kf you didn't get a connection to the server: Serial.println("connection failed"); } } void loop() { // if there are incoming bytes available // from the server, read them and print them: if (client.available()) { char c = client.read(); Serial.print(c); } // if the server's disconnected, stop the client: if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); // do nothing forevermore: while(true); } }
Попробуйте так.
неа не прошло(
В логах апача что-то светит?
Если активность есть - поменяйте строку
client.println(
"Host: http:\//192.168.0.20"
);
на
client.println(
"Host: 192.168.0.20"
);
вообщем вот так все заработало ;)
Блин... почему всегда так...) вообщем наладил я отправку данных на пхп сервер, но состыковать данный код со своими алгоритмами почемуто не получается... все зависает..
все работает нормально если вывести в комментарий строчку соединения с сервером, а без нее ни как... в чем может быть причина?
Зачем Вам две одинаковые функции?
И было бы неплохо посмотреть в логи апача.
UPD. зачем в коде так много проверок на прошествие 500мс? Можно весь подобный код записать под одним условием if((millis() - time16) > interval) и будет код дергаться каждые полсекунды.
я пробывал уже вставлять из примера webclient данные строки... не помогает( все также виснет... на сериал порте все глухо...
но если закоментить 98 строку, то все работает....
из-за чего коннект может вводить ардуину в ступор?
два раза отслеживал 500 мс чтобы дать время ардуине подключиться и отослать месадж и получалось что ардуина отправляла сообщение раз в секунду.
пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D
сейчас протестю и отпишусь)
пардон.. последний пост не считать актуальным... апппач почемуто был выключен :D
сейчас протестю и отпишусь)
Я как бы не раз указывал Вам на то что следует обратить внимание на логи апача...
да нет дело в том что апач до этого работал... но все равно небыло реакции... это потом когда я на обед пошел я все выключил...
но не в этом суть...) факт в том, что не работало всеравно с моими алгоритмами..)
НО!!!! я все таки разгодал эту загадку))
Как говорится... дело было не в бабине.... да****б сидел в кабине.. ;)
зашел на сайт почитал про шилд и понял, что в случае взаимодействия с МЕГОй ему нужны для общения пины с 50 по 53... а они в моем проекте были задействованы и им присваивалось значение вход..
строки 171,175,179,183.... как только их закоментил... все ожило.....
вообщем вот такая байка..) дело может быть не только в коде. ;)
Это хорошо что всё решилось.
Но все же обратите внимания на код. В нём почти 18 одинаковых проверок на прошествие 1000мс(interval ).
не совсем понимаю?:)
они в каждом алгоритме начинают отсчитывать свое время и сохраняются в разные значения...
если не сложно, то обьясните плз в чем именно косяк?;)
буду благодарен)
То есть переменных time должно быть столько же, сколько и переменных interval
А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу. Может я конечно чего то не понмаю, но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....
А если у меня везде требурется задержка в 1 секунду.... Помоему проще плясать от одного интервала, чем городить кучу.
"переменных time должно быть столько же, сколько и переменных interval." Из этого следует что переменная interval будет только одна соответственно как и переменная time.
Помоему проще плясать от одного интервала, чем городить кучу...
но если твоий пример применить ко мне в проект, то получается, что интервал1= интервал2=интервал3.....
126
long
interval = 1000;
//vremja prohogdenija komandi na lineinoi chasti
127
long
interval2 = 15000;
//ustavka vremeni na otkritie tranzitnogo klapana
128
long
interval3 = 500;
129
long
interval4 = 333;
Я отталкивался от кода.
interval3 и interval 4 это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...
если посмотреть на код для каждой задвижки... то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех одна равная interval = 1000.....
interval3 и interval 4 это были эксперементальными промежутками) они потом будут использоваться при отсылке пакетов на php...
если посмотреть на код для каждой задвижки... то получаается что алгоритм для каждой задвижки не зависим от time остальных задвижек, а задержка в алгоритмах для всех одна равная interval = 1000.....
Зачем time для каждой задвижки, если у всеж один интервал?
просто если алгоритм отработает для одной задвижки, то алгоритм для второй задвижки уже будет зависить от первой, поэтому я после прошествия алгоритма для каждой задвижки перезаписываю time.
Если делать как ты говоришь, получается тот же delay...
я тоже маялся с отправкой данных и победил следующим образом:
1. проверь адрес в настойках LAN компьютора. дожно быть 192.168.0.xxx и не как иначе(первые 3 значеия везде должны быть одинаковы!!!
2. Добавь адрес сервера куда будешь отсылать данные. обративнимание на 192.168.0.ххх
Char buffer[80] - это максималльное количество символов, которое сможешь отавить
вот кусочек 100% рабочего кода
просто у меня немного другой формат и все.
должно работать!
я проверял так:
писал в браузере в графе адрес: /objects/?object=TempSensor1&op=m&m=tempChanged&t=25
и сервер принимал значение 25. Если у тебя тест сработает, значит код будет работать
дак я уже отписался, что у меня все работает)) Но все равно спасибо за совет;)