洛克王国专用号 发表于 2013-12-31 23:36:26

如何提高查找速度?

       在学习如下WebServerPost代码示例时,发现TextFinder.h 中getValue()和findUntil()执行效率很低,运行到此处时要耗费10s钟,有没有好办法提高执行效率?

/*
*WebServerPost sketch
*
*/
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>

byte mac[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED};
byte ip[] = {192,168,1,177};

char buffer;
EthernetServer server(80);

void setup(){
Serial.begin(9600);
Ethernet.begin(mac,ip);
delay(3000);
Serial.println("Ready");
}

void loop(){
EthernetClient client = server.available();
if(client){
    TextFinder finder(client);
    inttype = 0;
    while(client.connected()){
       if(client.available()){
         //GET,POST,or HEAD
         
         if(finder.getString("","/",buffer,sizeof(buffer))){
         
             if(strcmp(buffer,"POST ")==0){
               finder.find("\n\r");
                  int startTime = millis(); //
               while(finder.findUntil("pinD","\n\r")){
                  
                  int pin = finder.getValue();
                  int val = finder.getValue();
               Serial.println(millis()-startTime);//上述耗费10s,有何好办法效率更高点
               
                  pinMode(pin,OUTPUT);
                  digitalWrite(pin,val);
               }
               
             }
            
             sendHeader(client,"Post example");
             client.println("<h2>点击按钮分别关闭和电灯 pin8 led</h2>");
             client.print("<form action = '/' method = 'POST'><P><input type = 'hidden' name = 'pinD8'");
             client.println(" value='0'><input type='submit' value = 'off' /></form>");
             client.print("<form action = '/' method = 'POST'><p><input type = 'hidden' name = 'pinD8'");
             client.print(" value='1'><input type= 'submit' value = 'On'/></form>");
             client.println("</body></html>");
             client.stop();
            
         }
         break;
       }
    }
    //give the web browser time to receive the data
    delay(1);
    client.stop();
}
}

void sendHeader(EthernetClient client,char *title){
   //send a standard http response header
   client.println("HTTP/1.1 200 OK");
   client.println("Content-Type: text/html");
   client.println();
   client.print("<html><head><title>");
   client.print(title);
   client.println("</title><body>");
}
#
页: [1]
查看完整版本: 如何提高查找速度?