|
|
在学习如下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[8];
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);
int type = 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>");
}
#
|
|