Arduino http请求
我正在发送数据到网络服务器,并且网络服务器存储在mysql数据库中。我如何将东西(ok)变量返回给arduino并进行串行打印(#stuff)?Arduino http请求
String request = "GET "+ repository + "sensor.php?value=" + value + " HTTP/1.0";
send_request(request);
void send_request (String request) {
Adafruit_CC3000_Client client = cc3000.connectTCP(ip, port);
if (client.connected()) {
client.println(request);
client.println(F(""));
Serial.println("Connected & Data sent");
}
else {
Serial.println(F("Connection failed"));
}
char c = client.read();
while (client.connected()) {
while (client.available()) {
char c = client.read();
}
}
Serial.println("Closing connection");
client.close();
}
php文件:
$stuff = "";
include("conec.php");
if ($_GET["value"]) {
$link=Conection();
$Sql="insert into table (VALUE) values ('".($_GET["value"])."')";
mysql_query($Sql,$link);
$stuff = ok;
}
我不知道Arduino的,但我的猜测是,client.read();
读取响应字符。现在,您正在读取变量c
并覆盖该变量,直到您读完整个响应。尝试制作字符串缓冲区,并将字符读入字符串。一旦完成,尝试打印出你的缓冲区。
没有任何的测试代码将是沿着线:
string buffer;
int counter = 0;
while (client.connected()) {
while (client.available()) {
buffer[counter++] = client.read();
}
}
Serial.println("Closing connection");
Serial.println("Buffer value is: " + buffer);
client.close();
将取代:
char c = client.read();
while (client.connected()) {
while (client.available()) {
char c = client.read();
}
}
Serial.println("Closing connection");
client.close();
也将不得不把一个echo $stuff
在你的PHP文件,以响应到传入的请求。
编辑
你也有一对夫妇更多的问题。 mysql库已被弃用,我建议您查看mysqli php库。您还易受到$_GET["value"]
直接插入SQL查询字符串的SQL注入攻击。看看使用函数mysqli_real_escape_string()函数为了保护自己。
您也不会将$stuff
分配给字符串。一定要把ok
放在引号中。
不工作,逻辑看起来不错,但没有显示任何内容:缓冲区值为: – milhas
将浏览器导航到运行PHP文件的服务器,它应打印出您要查找的值。还要看看你在什么地方定义'$ stuff',确保通过在引号中加上'“ok”'来把它分配给一个字符串。另外,在你的PHP文件中,你会使用mysql_real_escape_string()函数让自己容易受到SQL注入的影响。 mysql库也被弃用,请使用mysqli来代替。 – Adam
我已经试过用这个“”或“',我可以看到这个$ stuff打印,但是arduino无法读取这个值,我不知道为什么。 Tnk你为sql符号,但我会在第二步解决这个问题,因为现在不是我的优先权。 – milhas
你只是想看看输出到请求? 'echo $ stuff;' – Adam
我想使用我发送的$ stuff变量在arduino中进行一次串行打印。 – milhas