本帖最后由 Cube 于 2013-3-2 22:15 编辑
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <math.h>
byte mac[] = {
0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
byte ip[]={
192,168,1,10};
byte gateway[]={
192,168,1,1};
byte subnet[]={
255,255,255,0};
EthernetClient client;
char server[] = "www.XXX.com";
String returnValue = "";
void setup() {
Wire.begin();
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}
else {
Ethernet.begin(mac, ip) ;
Serial.println("Ethernet configuration OK");
}
}
void getReturn(){
// len= client.available();
// Serial.println(len);
while(client.available()) {
char c = client.read();
returnValue += c;
delay(1);
}
}
void request(){
if (client.connect(server,80)) {
//XXXXXXX
}else{
//XXXXX
}
}
void loop() {
request();
delay(500);
getReturn();
delay(3000);
}
void parseData(void) {
//XXXXX
}
void post1() {
if (client.connect(server,80)) {
//XXXXXXXXXXXXXXX
}
else{
//XXXXX
}
}
void ignore(void){
while(client.available()) {
char c = client.read();
}
}
void post2( ) {
if (client.connect(server,80)) {
//XXXXXXXXXXXXXXXXXXXX
}
else{
//XXXXX
}
}
代码的功能很简单,就是获取服务器上的开关信息,然后控制本地的开关。
问题就在于最后这两个方法,ignore和post2。不加这两个方法,returnValue 里面的数据是完整的,加上以后数据就不完整了,有时候连setup函数都不执行。
|