oldzhu 发表于 2014-5-27 17:41:18

新手求助W5100模块最基础的问题!

我是使用arduino的新手,最近在捣鼓w5100,遇到了一点问题。
我在测试官方的样例代码,
http://bildr.org/2011/06/arduino-ethernet-pin-control/

#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;

////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
//byte ip[] = { 192, 168, 0, 199 };   //Manual setup only
//byte gateway[] = { 192, 168, 0, 1 }; //Manual setup only
//byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only

// if need to change the MAC address (Very Rare)
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

EthernetServer server = EthernetServer(80); //port 80
////////////////////////////////////////////////////////////////////////

void setup(){
Serial.begin(9600);

//Pins 10,11,12 & 13 are used by the ethernet shield

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

Ethernet.begin(mac);
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup

server.begin();
Serial.println(Ethernet.localIP());

}

void loop(){

// listen for incoming clients, and process qequest.
checkForClient();

}

void checkForClient(){

EthernetClient client = server.available();

if (client) {

    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected()) {
      if (client.available()) {

      if(!sentHeader){
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          sentHeader = true;
      }

      char c = client.read();

      if(reading && c == ' ') reading = false;
      if(c == '?') reading = true; //found the ?, begin reading the info

      if(reading){
          Serial.print(c);

         switch (c) {
            case '2':
            //add code here to trigger on 2
            triggerPin(2, client);
            break;
            case '3':
            //add code here to trigger on 3
            triggerPin(3, client);
            break;
            case '4':
            //add code here to trigger on 4
            triggerPin(4, client);
            break;
            case '5':
            //add code here to trigger on 5
            triggerPin(5, client);
            break;
            case '6':
            //add code here to trigger on 6
            triggerPin(6, client);
            break;
            case '7':
            //add code here to trigger on 7
            triggerPin(7, client);
            break;
            case '8':
            //add code here to trigger on 8
            triggerPin(8, client);
            break;
            case '9':
            //add code here to trigger on 9
            triggerPin(9, client);
            break;
          }

      }

      if (c == '\n' && currentLineIsBlank)break;

      if (c == '\n') {
          currentLineIsBlank = true;
      }else if (c != '\r') {
          currentLineIsBlank = false;
      }

      }
    }

    delay(1); // give the web browser time to receive the data
    client.stop(); // close the connection:

}

}

void triggerPin(int pin, EthernetClient client){
//blink a pin - Client needed just for HTML output purposes.
client.print("Turning on pin ");
client.println(pin);
client.print("<br>");

digitalWrite(pin, HIGH);
delay(25);
digitalWrite(pin, LOW);
delay(25);
}

我看了代码的大意,意思是通过在浏览器输入类似于http://192.168.1.167/?23456789这样的命令然后会依次在2,3,4,5,6,7,8,9这几个Pin上设为高电平(如果有灯的话就亮),并且制作一个相应的网页作为反馈。

其中该设备的ip和读取的字符串会在串口监视里输出,可现在的问题就是,我的ip输出了,但是读取的字符串却没有显示,相应的反馈网页也是显示该网页无法访问。

这是为什么?
页: [1]
查看完整版本: 新手求助W5100模块最基础的问题!