【问题标题】:Arduino Ethernet Reading from PHP File从 PHP 文件读取 Arduino 以太网
【发布时间】:2013-06-12 15:46:48
【问题描述】:

我正在编写一个简单的 Arduino 以太网程序。该程序向服务器发送一个 HTTP GET 请求,然后服务器回显“Hello World”,我应该能够通过 Arduino 以太网接收它并在 Arduino 1.0.4 IDE 的串行监视器上打印它。这里有一些有用的信息。我在 Windows Server 2003 上使用 XAMPP 服务器。我已将我的 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”。关于如何解决该问题的任何建议?请保持你的答案简单。

【问题讨论】:

    标签: arduino arduino-ide


    【解决方案1】:

    您没有发送必要的行尾。该协议要求在请求方法的末尾有一个 CR-LF,在完整请求的末尾有另一个 CR-LF,可以包含其他标题行。见:

    HTTP requests

    这意味着在您的情况下,您需要两个 CR-LF 来终止请求。不要依赖默认的 println 函数。使用 print 控制代码中的行尾:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多