I am using the ‘GoogleStockSearch’ sketch which works fine for me when I look for a simple stock. However when I look for a currency, the sketch cannot bring it back because there is text in the field.
I think the sketch searches for ’ <span class=“pr”>" ’ and gets what is after the next ‘>’. For a single stock this is fine because it is a number in the source:-
102.25 the number for this stock being 102.25.however for a currency the same field comes back as :-
1 GBP = 1.6587 USDyou can see there is ‘USD’ in the field which I think is causing an error as the sketch is looking for a ‘float’. The same problem occurs when I search for an index, I presume because it has a ‘,’ in it.
Obviously I want to bring back a string or text or some sort but I do not know how to do this.
I have looked at the textfinder library but I want to keep it more simple for now. I am sure there is a way but I just can’t get it.
Thanks in advance
/*
* Web Client Google Finance sketch
* get the stock value for google and write to analog pin 3.
*/
#include <SPI.h> // needed for Arduino versions later than 0018
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char serverName[] = "www.google.com";
EthernetClient client;
float value;
void setup()
{
Serial.begin(9600);
if(Ethernet.begin(mac) == 0) { // start ethernet using mac & IP address
Serial.println("Failed to configure Ethernet using DHCP");
while(true) // no point in carrying on, so stay in endless loop:
;
}
delay(1000); // give the Ethernet shield a second to initialize
}
void loop()
{
Serial.print("Connecting... ");
if (client.connect(serverName, 80)>0) {
client.println("GET //finance?q=aud HTTP/1.0");
client.println("User-Agent: Arduino 1.0");
client.println();
}
else
{
Serial.println("connection failed");
}
if (client.connected()) {
// if(client.find("<span class=\"pr\">")) //USED FOR STOCKS
// if(client.find("<span class=bld>")) //returns the id of the currency
if(client.find("1 GBP = <span class=bld>")) //returns the id of the currency
{
client.find(">"); // seek past the next '>' //USED FOR STOCKS
value = client.parseFloat();
Serial.print("Value :");
Serial.println(value); // value is printed
}
else
Serial.println("Could not find field");
}
else {
Serial.println("Disconnected");
}
client.stop();
client.flush();
delay(5000); // 5 seconds between each connect attempt
}