Arduino Ethernet Чтение из файла PHP

Я пишу простую программу Arduino Ethernet. Программа отправляет HTTP-запрос GET на сервер, а затем сервер повторяет «Hello World», и я должен получить его через Arduino Ethernet и распечатать на последовательном мониторе Arduino 1.0.4 IDE. Вот некоторая полезная информация. Я использую сервер XAMPP на Windows Server 2003. Я поместил свой файл PHP в /xampp/htdocs/xampp, а имя файла — rec.php. Содержимое rec.php

<?php
echo "Hello World";
?>

Это содержимое файла программы Arduino.

#include <Ethernet.h>
#include <SPI.h>

byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x7E, 0xAE}
IPAddress server { 192, 168, 1, 223 };
IPAddress ipAddress { xxx,xxx,xxx,xxx };
IPAddress myDNS {8,8,8,8};
IPAddress myGateway{192,168,1,1};
IPAddress mySubnet{255,255,255,0};

EthernetClient client;

void setup()
{
 Serial.begin(9600);
 Ethernet.begin(mac, ipAddress, myDNS, myGateway, mySubnet);

 delay(1000);
 Serial.println("connecting");

 if(client.connect(server, 80))
 {
  Serial.println("Connected");
  client.println("GET /rec.php HTTP/1.1");
 }
 else
  Serial.println("Not Connected");

}

void loop() 
{
   if(client.available())
   {
       char c = client.read();
       Serial.println(c);
       delay(1000);
   }
   else
   {
      Serial.println("Not Available");
      delay(1000);
   }
}

После того, как я загружаю программу на Arduino, я получаю это сообщение на последовательном мониторе «HTTP/1.1 400 Bad Request». Любое предложение о том, как решить эту проблему? и, пожалуйста, старайтесь, чтобы ваши ответы были простыми.


person Mahmoud Abdel-Rahman    schedule 12.06.2013    source источник


Ответы (1)


Вы не отправляете необходимые концы строк. Протокол требует CR-LF в конце метода запроса и еще один CR-LF в конце полного запроса, который может включать другие строки заголовка. Видеть:

HTTP-запросы

Это означает, что в вашем случае вам нужно два CR-LF для завершения запроса. Не полагайтесь на функцию println по умолчанию. Возьмите под контроль концы строк в вашем коде с помощью print:

client.print("GET /rec.php HTTP/1.1\r\n\r\n");
person jdr5ca    schedule 14.06.2013