Добрый день!
Играюсь с ethernet shield. Делаю замок на RFID метках, но хотелось бы еще сделать ардуину как вебсервер, чтобы можно было обращаться к ней get запросами на открытие нескольких замков.
Делаю вот такой запрос: http://192.168.0.177:8888/?relay2=31&relay1=15
Приведу кусок программы который работает, но если поставить два таких блока последовательно и изменить только во втором блоке relay1 на relay2, то перестает работать обработка и relay1:
if(HTTP_req.indexOf("relay1=") > -1)
{
int startIndex = HTTP_req.indexOf("relay1=");
char sym1 = HTTP_req[startIndex+7];
char sym2 = HTTP_req[startIndex+8];
Serial.print("String number1: "); Serial.println(sym1);
Serial.print("String number2: "); Serial.println(sym2);
if(isDigit(sym1))
{
sym1 = HTTP_req[startIndex+7] - '0';
if(isDigit(sym2))
{
sym2 = HTTP_req[startIndex+8] - '0';
http_relay_open[0] = sym2 + sym1*10;
if(http_relay_open[0] > 0 && http_relay_open[0] <= 32)
{
ethclient.print("<h1> Request is executed for Relay1 = ");
ethclient.print(http_relay_open[0]);
ethclient.println("</h1>");
http_relay_cnt++;
}
else
{
http_relay_open[0] = 0;
ethclient.println("<h1> Request is not corect for relay1! </h1>");
}
}
else
{
http_relay_open[0] = sym1;
if(http_relay_open[0] > 0)
{
ethclient.print("<h1> Request is executed for Relay1 = ");
ethclient.print(http_relay_open[0]);
ethclient.println("</h1>");
http_relay_cnt++;
}
else{
ethclient.println("<h1> Request is not corect for relay1! </h1>");
}
}
Serial.print("http_relay_open: "); Serial.println(http_relay_open[0]);
}
}
Привожу кусок программы которые не работает дожным образом:
// String get_relay_name[3] = {"relay1","relay2","relay3"};
// for(int i = 0; i < 3; i++)
// {
// Serial.print("Check for ");
// Serial.print(get_relay_name[i]);
// if(HTTP_req.indexOf(get_relay_name[i]) > -1)
// {
// int startIndex = HTTP_req.indexOf(get_relay_name[i]);
// char sym1 = HTTP_req[startIndex+7];
// char sym2 = HTTP_req[startIndex+8];
// Serial.print("String number1: "); Serial.println(sym1);
// Serial.print("String number2: "); Serial.println(sym2);
// if(isDigit(sym1))
// {
// sym1 = HTTP_req[startIndex+7] - '0';
// if(isDigit(sym2))
// {
// sym2 = HTTP_req[startIndex+8] - '0';
// http_relay_open[i] = sym2 + sym1*10;
// if(http_relay_open[i] > 0 && http_relay_open[i] <= 32)
// {
// ethclient.print("<h1> Request is executed for ");
// ethclient.print(get_relay_name[i]);
// ethclient.print(" ");
// ethclient.print(http_relay_open[i]);
// ethclient.println(" !</h1>");
// http_relay_cnt++;
// }
// else
// {
// http_relay_open[0] = 0;
// ethclient.print("<h1> Request is not corect for ");
// ethclient.print(get_relay_name[i]);
// ethclient.println(" ! </h1>");
// }
// }
// else
// {
// http_relay_open[0] = sym1;
// if(http_relay_open[0] > 0)
// {
// ethclient.print("<h1> Request is executed for ");
// ethclient.print(get_relay_name[i]);
// ethclient.print(" ");
// ethclient.print(http_relay_open[i]);
// ethclient.println(" !</h1>");
// http_relay_cnt++;
// }
// else{
// ethclient.print("<h1> Request is not corect for ");
// ethclient.print(get_relay_name[i]);
// ethclient.println(" ! </h1>");
// }
// }
// Serial.print("http_relay_open: "); Serial.println(http_relay_open[i]);
// }
// }
// }
Заранее благодарю за помощь) Совсем уже голова не варит.
Не работает перебор строк.
- БлудныйКот
- Сообщения: 45
- Зарегистрирован: 29 дек 2016, 16:19
- БлудныйКот
- Сообщения: 45
- Зарегистрирован: 29 дек 2016, 16:19
Re: Не работает перебор строк.
Странно, разобрался только не с циклом а последовательно. Из за нехватки оперативки и флеша код работал не так как надо. Второй или третий раз натыкаюсь на эту проблему.
Вернуться в «Программирование Ардуино»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей