我是使用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输出了,但是读取的字符串却没有显示,相应的反馈网页也是显示该网页无法访问。
这是为什么? |