我正在尝试获取一个PHP页面,通过Apache服务器从带有以太网屏蔽的阿迪诺·尤诺中获取温度读数。我正在将温度读取写入文本文件,然后使用两个PHP文件将其从文本文件中写入到PHP页面。
但是,我无法将温度读取到文本文件。我不确定Arduino代码是否不正确,是否没有发送温度读数,或者PHP代码是否不正确,不接受温度读数。我知道Arduino和网页正在交流,因为我正在从网页读到串行监视器。
Arduino码
#include <Ethernet.h> //Library for Ethernet functions
#include <SPI.h>
#include <Client.h> //Library for client functions
byte MACaddress[] = {0x90, 0xA2, 0xDA, 0x0D, 0x8B, 0xB3}; //Replace with your Ethernet shield MAC address
byte IPaddress[] = { 192,168,1,102}; //The Arduino device IP address
byte subnet[] = { 255,255,255,0};
byte gateway[] = { 192,168,0,1};
IPAddress server(192,168,1,100); // IP address of server the Arduino sends data to
EthernetClient client;
bool connected = false;
int sensorInPin = 0;
float temperature = 0;
void setup(void)
{
Serial.begin(9600);
Serial.println("Initializing Ethernet.");
delay(1000);
Ethernet.begin(MACaddress);
Serial.println("LM35 Sensor ");
analogReference(INTERNAL);
}
void printTenths(int value)
{
// Prints a value of 123 as 12.3
Serial.print(value / 100);
Serial.print(".");
Serial.println(value % 10);
}
void loop(void)
{
int span = 20;
int aRead = 0;
for (int i = 0; i < span; i++)
{
aRead = aRead + analogRead(sensorInPin);
}
aRead = aRead / 20;
temperature = ((100 * 1.1 * aRead)/99) * 10;
if (!connected)
{
Serial.println("Not connected");
if (client.connect(server,80))
{
connected = true;
//int temp = analogRead(A1);
Serial.print("Temp is ");
Serial.println(temperature);
Serial.println();
Serial.println("Sending to Server: ");
client.print("GET /arduino.php?t0=\n");
Serial.print("GET /arduino.php?t0=\n");
client.print(temperature);
Serial.print(temperature);
Serial.println();
client.println();
client.println("HTTP/1.1\r\n");
Serial.println();
Serial.println("HTTP/1.1\r\n");
client.println("Host: localhost\r\n");
Serial.println("Host: localhost\r\n");
client.println();
client.println("User-Agent: Arduino\r\n");
Serial.println("User-Agent: Arduino\r\n");
client.println("Accept: text/html\r\n");
Serial.println("Accept: text/html\r\n");
client.println();
Serial.println();
delay(1000);
}
else
{
Serial.println("Cannot connect to Server");
}
}
else
{
delay(1000);
while (client.connected() && client.available())
{
char c = client.read();
Serial.print(c);
}
Serial.println();
client.stop();
connected = false;
}
}Arduino.php代码
<?php
echo date("d.m.Y-H:i:s");
file_put_contents("C:\Folder\Mechatronics Application\Semester 2\Project \Hello.txt",$_GET['t0']);
?>Index.php代码
<?php
echo date("d.m.Y-H:i:s");
$string1 = file_get_contents("C:\Folder\Mechatronics Application\Semester 2\Project\Hello.txt");
echo $string1;
?>发布于 2013-04-06 14:22:03
一般系统理论的原理之一是:“一个从零开始设计的复杂系统永远不会起作用,也不可能被修补以使它工作,你必须重新开始,从一个简单的工作系统开始。”
对你来说,这意味着“分而治之”。
除了文本文件的路径之外,您的服务器/PHP子系统不需要知道任何信息。该文本文件与您的微控制器没有任何关系。只需在编辑器中创建一个包含虚拟数据的文本文件即可。把它置于版本控制之下。让您的服务器/PHP子系统使用它。现在,文本文件是回归测试的一部分。
通过运行shell脚本或简短的PHP、红宝石或Python程序来定期编写合理的随机数据的红宝石作业,可以稍微提高这一点。当该方法生效时,您的网页应该显示数据随时间的变化。
一旦成功,您就可以开始对Arduino子系统进行锤击,因为您知道服务器/PHP端是好的。
https://stackoverflow.com/questions/15851776
复制相似问题