2017-08-13 72 views
-2

我正在写代码为Arduino +以太网盾发送数据与$_GET方法(PHP),到一个Mysql数据库。Arduino以太网+ PHP请求

我已经测试了浏览器上的PHP代码,它工作正常,但在Arduino上它没有工作。我无法分辨问题在哪里。我一直在寻找其他论坛,并找不到任何答案。下面是我的代码,我将不胜感激,如果有人可以帮助解决崩溃

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

byte mac[] = { 
    0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; 
byte ip[] = { 192, 168, 1, 60 }; //IP (WEB CLIENT) 
byte server[] = { 192, 168, 1, 8 }; //IP (SERVER) 
EthernetClient client; 

void setup() { 
    Serial.begin(9600); 
    Ethernet.begin(mac, ip); 
    if (client.connect(server, 8095)) {   
    Serial.println("CONECTED"); 
    client.print("GET http://192.168.1.8:8095/prs/Query.php?a="); 
    client.print(2); 
    client.print(" HTTP/1.1\r\n"); 
    Serial.println("Information sent successfully!"); 
    delay(1000); 
    } else { 
    Serial.println("Conection fail"); 
    } 
} 

void loop() { 
} 
+0

欢迎#1。不幸的是,你的问题很不明确,而且“这里是我的代码,请纠正它!”这在这里不受欢迎。 –

+0

对不起,如果我被误解了,但我只是要求有人在这个领域更有经验,帮助我找到我的代码的问题,因为我已经尝试了一切,我无法实现它的工作。 –

+0

你在串口监视器上得到了什么输出? –

回答

0
client.print("GET http://192.168.1.8:8095/prs/Query.php?a="); 
client.print(2); 
client.print(" HTTP/1.1\r\n"); 

这不是一个合式HTTP 1.1请求:

  1. 它包含一个协议,主机名,并在请求线路端口。这在HTTP代理请求之外是不合适的。它不包含Host标题。

  2. 请求后不包含两条换行符。

一个适当的请求可能类似于:

"GET /prs/Query.php?a=2\r\nHost: 192.168.1.8\r\n\r\n" 
+0

谢谢。那是问题,现在它正在工作 –

0

我注意到以太网客户端变量/对象被称为cliente(与上月底的五)在其声明,但低于这个对象的名称是客户端(没有结束),如果你改正了这个名称的差异,它是否工作?

EthernetClient cliente; 

client.connect(server, 8095)