#1 2019-01-23 21:26:01

Refalkof
Учасник
Зареєстрований: 2019-01-23
Повідомлень: 1

Ethernet отправка и прием данных Get запросом

Здравствуйте! Есть код... с отправкой разобрался, но как принять данные - непонятно. Помогите, что с кодом не так? В правильном ли порядке прописан client.read?
С сервера поступает echo 1; //или 0

#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
 
OneWire oneWire(15);
DallasTemperature ds(&oneWire);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 
EthernetClient client;
char server[] = "-----";
int buff = 0;
const int led = 7;
 
void setup()
{
Ethernet.begin(mac);
ds.begin();
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
}
 
void loop()
{
 
ds.requestTemperatures();
 
if (client.connect(server, 80))
{
 
client.print( "GET /add.php?");
client.print("temperature=");
client.print( ds.getTempCByIndex(0) );
client.print("&");
client.print("&");
client.print("temperature1=");
client.print( ds.getTempCByIndex(1) );
client.println( " HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
client.println();
 
delay(200);
 
while (client.available())
{
char c = client.read();
if ( c=='1')
{
buff=1;
}
if ( c=='0')
{
buff=0;
}
}
client.stop();
client.flush();
delay(100);
}
else
{
client.stop();
delay(1000);
client.connect(server, 80);
}
 
if ( buff==1)
{
digitalWrite (led, HIGH);
}
if ( buff==0)
{
digitalWrite(led, LOW);
}
delay(500);
}

Остання редакція Refalkof (2019-01-24 18:01:55)

Неактивний

#2 2019-02-23 17:20:45

Жорж
Учасник
Зареєстрований: 2019-02-23
Повідомлень: 14

Re: Ethernet отправка и прием данных Get запросом

якщо ще актуально)

Есть код... с отправкой разобрался

а відправка йде точно?
проблеми можуть бути у двох місцях:

client.print( ds.getTempCByIndex(0) );

отримання даних із датчика займає досить тривалий час, тому краще попередньо отримати дані у якусь змінну, а потім відправляти get-запросом
якщо дані все ж таки відправляються то затримка у 200 ms перед отриманням даних

delay(200);
 
while (client.available())

іноді може бути замалою. цей час тратиться на виконання самого скрипта "add.php" на веб-сервері плюс 1-3 ms на отримання результату мікроконтроллером, і якщо у вас тормознутий скрипт, або БД, або сам апач то цей час може бути більший ніж 200ms.
наприклад в мене середній час на get-запрос і отримання й обробку відповіді 20ms, із них:
-  5ms - встановлення зв'язку з web-сервером і відправка get-запросу
- 10ms - час виконання скрипта на web-сервері
-  5ms - отримання і парсинг відповіді
але періодично цей час займає більше 200-250ms або навіть кількох секунд. це може бути на ділянці встановлення зв'язку з web-сервером, або під час виконання web-скрипта

Неактивний

#3 2019-03-12 18:43:44

Хахол
Гість

Re: Ethernet отправка и прием данных Get запросом

Жорж.Пиши уже на русском , если не можешь по-украински. Тебя поймут лучше . А то типа -"ферштейн цюрюк нахрен"

#4 2019-03-16 00:48:22

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: Ethernet отправка и прием данных Get запросом

"кто-то" уж очень увлекся гостевыми сообщениями, пора лочить фичу )

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму