Mega + Ethernet время сессии
- Войдите на сайт для отправки комментариев
Ср, 27/11/2013 - 14:29
Приветствую всех!
Вопрос следующий: Можно-ли указывать в скетче ограничение времени сессии при работе с Ethernet шилдом? Или каким-нить еще способом. А назрел такой вопрос вот почему. Если захожу с браузера и делаю действия на сервере (шилде т.е.) - то все ок, все работает. Стоит зайти с телефона - и начинаются затупы. Не срабатывают команды отправляемые этому серверу. Простейший пример - зажигать светодиод. С браузера - все норм, вкл и выкл. Только захожу с телефона и жму, допустим вкл - диод мигает и не загорается, хотя по-идее должен. Приходится ждать неопределенное время, чтоб все заработало и с телефона.
Можно-ли указывать в скетче ограничение времени сессии при работе с Ethernet шилдом?
Можно. А еще возможно устранить причину и не пытаться устранять последствия...
Можно. А еще возможно устранить причину и не пытаться устранять последствия...
Нужно показать код? Он стандартный, с примера.
Да, нужно.
#include <SPI.h> #include <String.h> #include <Ethernet.h> /*Управление светодиодом через Ethernet */ byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //mac - адрес ethernet shielda byte ip[] = { 192, 168, 1, 15 }; // ip адрес ethernet shielda byte subnet[] = { 255, 255, 255, 0 }; //маска подсети EthernetServer server(80); //порт сервера int ledPin = 13; // указываем что светодиод будет управляться через 13 Pin String readString = String(30); //string for fetching data from address boolean LEDON = false; //изначальный статус светодиода - выключен void setup(){ //запускаем Ethernet Ethernet.begin(mac, ip, subnet); //устанавливаем pin 4 на выход pinMode(ledPin, OUTPUT); //enable serial datada print Serial.begin(9600); } void loop(){ // Создаем клиентское соединение EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //read char by char HTTP request if (readString.length() < 30) { //store characters to string readString.concat( c); } //output chars to serial port Serial.print( c); //if HTTP request has ended if (c == '\n') { //Проверяем включили ли светодиод? //Level=1 - включен //Level=0 - выключен if(readString.indexOf("Level=1") >=0) { //Включаем светодиод digitalWrite(ledPin, HIGH); // set the LED on LEDON = true; }else{ //Выключаем светодиод digitalWrite(ledPin, LOW); // set the LED OFF LEDON = false; } // Формируем HTML client.println("HTTP/1.0 200 OK"); client.println("Content-Type: text/html"); client.println(); client.println("<head> "); client.println("<meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> "); client.println("<title> Arduino :: Управление V0.1</title>"); client.println("</head> "); client.println("<body>"); //controlling led via radio elements client.println("<h3>Управление светодиодом 13 pin</h3>"); if (LEDON){ client.println("<form method=get name=LED><input type=radio name=Level value=1 CHECKED>Включить<input type=radio name=Level value=0>Выключить<input type=submit value=Применить></form>"); client.println("<font size=’5′>LED-статус: "); client.println("<font size=’5′>Вкл."); }else{ client.println("<form method=get name=LED><input type=radio name=Level value=1>Включить<input type=radio name=Level value=0 CHECKED>Выключить<input type=submit value=Применить></form>"); client.println("<font size=’5′>LED-статус: "); client.println("<font size=’5′>Выкл"); } client.println("<hr />"); client.println("</body></html>"); //clearing string for next read readString=""; //останавливаем web-client client.stop(); } } } } }Впервую очередь нужно сделать это:
if(readString.indexOf("Level=1") >=0) { //Включаем светодиод digitalWrite(ledPin, HIGH); // set the LED on LEDON = true; }else if(readString.indexOf("Level=0") >=0){ //Выключаем светодиод digitalWrite(ledPin, LOW); // set the LED OFF LEDON = false; }Большое спасибо maksim. Доберусь до дома - проверю.
Да, все работает. Еще раз спасибо!
[quote=Sorny Если захожу с браузера и делаю действия на сервере (шилде т.е.) - то все ок, все работает. Стоит зайти с телефона - и начинаются затупы. Не срабатывают команды отправляемые этому серверу. Простейший пример - зажигать светодиод. С браузера - все норм, вкл и выкл. Только захожу с телефона и жму, допустим вкл - диод мигает и не загорается, хотя по-идее должен. Приходится ждать неопределенное время, чтоб все заработало и с телефона. [/quote]
расскажите какой магией работало через browser ?
расскажите какой магией работало через browser ?
Не совсем понял Ваш вопрос. В браузере вбиваю IP заданный в скетче и жамкаю нужные мне действия.
расскажите какой магией работало через browser ?
ардуина для browser догадливая else if(readString.indexOf("Level=0") >=0){ , а для телефона нет?