本帖最后由 tsaiwn 于 2015-4-16 01:37 编辑
布列松 发表于 2015-4-15 23:19
嗯 我想办法其它的试一试
You can try like this version:
(See those line ending with ////////////////////////////////////////////)- #include <EtherCard.h>
-
- static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
- static byte myip[] = {192,168,1,180};
- byte Ethernet::buffer[700];
-
- const int ledPin = 3;
- const int ledPin2 = 4;
- const int ledPin3 = 5;
- const int ledPin4 = 6;
-
- boolean ledStatus;
- boolean ledStatus2;
- boolean ledStatus3;
- boolean ledStatus4;
-
- char* on = "ON";
- char* off = "OFF";
-
- char* statusLabel;
- char* buttonLabel;
- char* statusLabel2;
- char* buttonLabel2;
- char* statusLabel3;
- char* buttonLabel3;
- char* statusLabel4;
- char* buttonLabel4;
-
- unsigned char rs485_ON_01[8] = {0x01,0x05,0x00,0x10,0xFF,0x00,0x8D,0xFF};
- unsigned char rs485_OFF_01[8] = {0x01,0x05,0x00,0x10,0x00,0x00,0xCC,0x0F};
-
- unsigned char rs485_ON_02[8] = {0x01,0x05,0x00,0x11,0xFF,0x00,0xDC,0x3F};
- unsigned char rs485_OFF_02[8] = {0x01,0x05,0x00,0x11,0x00,0x00,0x9D,0xCF};
-
- unsigned char rs485_ON_03[8] = {0x01,0x05,0x00,0x12,0xFF,0x00,0x2C,0x3F};
- unsigned char rs485_OFF_03[8] = {0x01,0x05,0x00,0x12,0x00,0x00,0x6D,0xCF};
-
- unsigned char rs485_ON_04[8] = {0x01,0x05,0x00,0x13,0xFF,0x00,0x7D,0xFF};
- unsigned char rs485_OFF_04[8] = {0x01,0x05,0x00,0x13,0x00,0x00,0x3C,0x0F};
-
- void setup () {
-
- Serial.begin(9600);
- Serial.println("WebLed Demo");
-
- if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
- Serial.println( "Failed to access Ethernet controller");
- else
- Serial.println("Ethernet controller initialized");
-
- if (!ether.staticSetup(myip))
- Serial.println("Failed to set IP address");
-
- Serial.println();
-
- pinMode(ledPin, OUTPUT);
- digitalWrite(ledPin, LOW);
- pinMode(ledPin2, OUTPUT);
- digitalWrite(ledPin2, LOW);
- pinMode(ledPin3, OUTPUT);
- digitalWrite(ledPin3, LOW);
- pinMode(ledPin4, OUTPUT);
- digitalWrite(ledPin4, LOW);
-
- ledStatus = false;
- ledStatus2 = false;
- ledStatus3 = false;
- ledStatus4 = false;
- } // setup(
-
- void loop() {
- static long noReact = 0; ///////////////////////////
- word len = ether.packetReceive();
- word pos = ether.packetLoop(len);
- if(pos) noReact = 0; //////////////////////////////
- ++noReact; ////////////////////////////////////////
- delay(100); // 0.1 秒 ////////////////////////////
- if(noReact > 3*60*1000/100) setup( ); // 三分鐘沒收到; /100 : because delay(100) //////////////////////////////////////
-
- doLed(pos);
- doLed2(pos);
- doLed3(pos);
- doLed4(pos);
-
- BufferFiller bfill = ether.tcpOffset();
- bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
- "Content-Type: text/html\r\nPragma: no-cache\r\n\r\n"
- "<html><head><title>WebLed</title></head>"
- "<body>"
- "LED Status: $S "
- "<a href="/?status=$S"><input type="button" value="$S"></a>"
- "<br><br>"
-
- "LED2 Status: $S "
- "<a href="/?status2=$S"><input type="button" value="$S"></a>"
- "<br><br>"
-
- "LED3 Status: $S "
- "<a href="/?status3=$S"><input type="button" value="$S"></a>"
- "<br><br>"
-
- "LED4 Status: $S "
- "<a href="/?status4=$S"><input type="button" value="$S"></a>"
- "<br><br>"
-
- "</body></html>\r\n\r\n"
- ), statusLabel, buttonLabel, buttonLabel,
- statusLabel2, buttonLabel2, buttonLabel2,
- statusLabel3, buttonLabel3, buttonLabel3,
- statusLabel4, buttonLabel4, buttonLabel4
- );
- ether.httpServerReply(bfill.position());
- } // loop(
-
- void doLed( word pos) {
- if(pos) {
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status=ON") != 0) {
- Serial.write(rs485_ON_01, 8);
- ledStatus = true;
- }// if(strstr
-
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status=OFF") != 0) {
- Serial.write(rs485_OFF_01, 8);
- ledStatus = false;
- }
-
- if(ledStatus) {
- digitalWrite(ledPin, HIGH);
- statusLabel = on;
- buttonLabel = off;
- } else {
- digitalWrite(ledPin, LOW);
- statusLabel = off;
- buttonLabel = on;
- }// if(..else..
- }// if(pos
- } // doLed(
- ///////////////////////////
- void doLed2(word pos ) {
- if(pos) {
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status2=ON") != 0) {
- Serial.write(rs485_ON_02, 8);
- ledStatus2 = true;
- }
-
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status2=OFF") != 0) {
- Serial.write(rs485_OFF_02, 8);
- ledStatus2 = false;
- }
-
- if(ledStatus2) {
- digitalWrite(ledPin2, HIGH);
- statusLabel2 = on;
- buttonLabel2 = off;
- } else {
- digitalWrite(ledPin2, LOW);
- statusLabel2 = off;
- buttonLabel2 = on;
- }
- }// if(pos
- } // doLed2(
- void doLed3(word pos ) {
- if(pos) {
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status3=ON") != 0) {
- Serial.write(rs485_ON_03, 8);
- ledStatus3 = true;
- }
-
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status3=OFF") != 0) {
- Serial.write(rs485_OFF_03, 8);
- ledStatus3 = false;
- }
-
- if(ledStatus3) {
- digitalWrite(ledPin3, HIGH);
- statusLabel3 = on;
- buttonLabel3 = off;
- } else {
- digitalWrite(ledPin3, LOW);
- statusLabel3 = off;
- buttonLabel3 = on;
- }
- } // if(pos
- } // doLed3(
- void doLed4(word pos ) {
- if(pos) {
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status4=ON") != 0) {
- Serial.write(rs485_ON_04, 8);
- ledStatus4 = true;
- }
-
- if(strstr((char *)Ethernet::buffer + pos, "GET /?status4=OFF") != 0) {
- Serial.write(rs485_OFF_04, 8);
- ledStatus4 = false;
- }
-
- if(ledStatus4) {
- digitalWrite(ledPin4, HIGH);
- statusLabel4 = on;
- buttonLabel4 = off;
- } else {
- digitalWrite(ledPin4, LOW);
- statusLabel4 = off;
- buttonLabel4 = on;
- }
- }// if(pos
- }// doLed4(
复制代码 |