Um das Thema noch einmal aufzugreifen:
Inzwischen gibt es die URL www.clever-tanken.de in deren Quelltext die Bezinpreise enthalten sind. Mein Ansinnen ist nun, diese Preise mit der library Textfinder.h zu extrahieren.
Wie weit bin ich? Die Webseite wird als Quelltext - wenn kein finder.find() aktiviert ist - einwandfrei im SerialMonitor angezeigt. Aktiviere ich den Finder und lass ihn nach einem bestimmten string suchen, wird der Quelltext nicht mehr angezeigt nur noch ein "H", Scheint ein zeitliches Problem zu sein ist aber sekundär.
Ärgerlicher ist, dass die Suchfunktion nur im oberen Bereich funktioniert. Der Bereich, in dem die Ergebnisse stehen, wird offensichtlich nicht ausgewertet. Um die Pprogrammierunng zu ändern, muss ich wissen, warum nichts ausgewertet wird.
Ich habe mal den kompletten Sketch beigefügt. Der Bereich "Finder ist markiert. Als Suche habe ich eine Tankstellennummer meines Bereiches ausgewählt (Die aber nicht gefunden wird)
/*
Web client sketch for IDE v1.0.1 and w5100/w5200
Uses GET method.
Posted October 2012 by SurferTim
Last modified September 15, 2013
*/
#include <SPI.h>
#include <Ethernet.h>
#include <TextFinder.h>
// this must be unique
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// change to your network settings
IPAddress ip(192,168,2,44);
IPAddress gateway(192, 168, 2, 1);
IPAddress subnet(255, 255, 255, 0);
// change to your server
IPAddress server(212,11,226,1); // clever-tanken
//Change to your domain name for virtual servers
char serverName[] = "www.clever-tanken.de";
// If no domain name, use the ip address above
// char serverName[] = "74.125.227.16";
// change to your server's port
int serverPort = 80;
EthernetClient client;
TextFinder finder( client);
int totalCount = 0;
char pageAdd[64] = "/tankstelle_liste?spritsorte=7&r=5&ort=41189&lat=&lon=";
char preis2[15]="5"; // Default-Zahl ist nur für Testzwecke
char preis3[15]="7";
#define delayMillis 60000UL
unsigned long thisMillis = 0;
unsigned long lastMillis = 0;
void setup() {
Serial.begin(9600);
// disable SD SPI
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
// Start ethernet
Serial.println(F("Starting ethernet..."));
Ethernet.begin(mac, ip, gateway);
// If using dhcp, comment out the line above
// and uncomment the next 2 lines
// if(!Ethernet.begin(mac)) Serial.println(F("failed"));
// else Serial.println(F("ok"));
digitalWrite(10,HIGH);
Serial.println(Ethernet.localIP());
delay(2000);
Serial.println(F("Ready"));
}
void loop()
{
thisMillis = millis();
if(thisMillis - lastMillis > delayMillis)
{
lastMillis = thisMillis;
// Modify next line to load different page
// or pass values to server
sprintf(pageAdd,"/",totalCount);
// sprintf(pageAdd,"/arduino.php?test=%u",totalCount);
if(!getPage(server,serverPort,pageAdd)) Serial.print(F("Fail "));
else Serial.print(F("Pass "));
totalCount++;
Serial.println(totalCount,DEC);
}
}
byte getPage(IPAddress ipBuf,int thisPort, char *page)
{
int inChar;
char outBuf[128];
Serial.print(F("connecting..."));
if(client.connect(ipBuf,thisPort))
{
Serial.println(F("connected"));
sprintf(outBuf,"GET %s HTTP/1.1",page);
client.println(outBuf);
sprintf(outBuf,"Host: %s",serverName);
client.println(outBuf);
client.println(F("Connection: close\r\n"));
}
else
{
Serial.println(F("failed"));
return 0;
}
// connectLoop controls the hardware fail timeout
int connectLoop = 0;
while(client.connected())
{
while(client.available())
{
int a=0;
inChar = client.read();
Serial.write(inChar);
// ----- Ende Start --------
if (finder.find("10564"))
{
a = 1;
Serial.println(a);
}
// ----- Ende Finder --------
// set connectLoop to zero if a packet arrives
connectLoop = 0;
}
connectLoop++;
// if more than 10000 milliseconds since the last packet
if(connectLoop > 10000)
{
// then close the connection from this end.
Serial.println();
Serial.println(F("Timeout"));
client.stop();
}
// this is a delay for the connectLoop timing
delay(1);
}
Serial.println();
Serial.println(F("disconnecting."));
// close client end
client.stop();
return 1;
}
Die Anlage Quell.txt enthält den Quelltext der Ergebnisseite. In dieser ist der Bereich, ab dem der Finder nicht mehr funktioniert deutlich markiert.
Kann sich jemand vorstellen, warum er nichts mehr findet?
Gruß Eberhard
Die Diskussion über die Sinnhaftigkeit, wo es doch Apps gibt, ist ja schon geführt worden. 8)
Quell.txt (58.6 KB)