Revision 0:27f6f27aef35, committed 2012-06-05
- Comitter:
- donde
- Date:
- Tue Jun 05 01:08:29 2012 +0000
- Commit message:
Changed in this revision
cnn_news.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 27f6f27aef35 cnn_news.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cnn_news.cpp Tue Jun 05 01:08:29 2012 +0000 @@ -0,0 +1,129 @@ + +#include "mbed.h" +#include "EthernetNetIf.h" +#include "HTTPClient.h" +#include "NokiaLCD.h" + +NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type + +EthernetNetIf eth; +HTTPClient http; +LocalFileSystem local("local"); +HTTPResult result; +bool completed = false; + +void request_callback(HTTPResult r) +{ + result = r; + completed = true; +} + +int main() { + + lcd.background(0x0000FF); + lcd.cls(); + + printf("Start\n"); + + printf("Setting up...\n"); + EthernetErr ethErr = eth.setup(); + if(ethErr) + { + printf("Error %d in setup.\n", ethErr); + return -1; + } + printf("Setup OK\n"); + + HTTPStream stream; + + int flag = 0; + int count = 0; + int pixel = 1; + char c; + char buffer[100]; + char BigBuf[512 + 1] = {0}; + stream.readNext((byte*)BigBuf, 512); //Point to buffer for the first read + + HTTPResult r = http.get("http://rss.cnn.com/rss/cnn_topstories.rss", &stream, request_callback); //Load a very large page, such as the hackaday RSS feed + FILE *fp = fopen("/local/out.txt", "w"); // Open "out.txt" on the local file system for writing + while(!completed) + { + Net::poll(); //Polls the Networking stack + if(stream.readable()) + { + BigBuf[stream.readLen()] = 0; //Transform this buffer in a zero-terminated char* string + fprintf(fp,BigBuf); + //Note: some servers do not like if you throttle them too much, so printf'ing during a request is generally bad practice + stream.readNext((byte*)BigBuf, 512); //Buffer has been read, now we can put more data in it + } + } + fclose(fp); + fp = fopen( "/local/out.txt", "r"); + if (fp==NULL) printf ("Error opening file"); + else + { + do + { + c = fgetc (fp); + if (c == '<') + { + c = fgetc(fp); + if(c == 't') + { + c = fgetc(fp); + if(c == 'i') + { + c = fgetc(fp); + if(c == 't') + { + c = fgetc(fp); + if( c == 'l') + { + c = fgetc(fp); + if( c == 'e') + { + c = fgetc(fp); + if(c == '>') + { + count++; + if((count >=3) && (count <=5)) + { + if(count == 6) break; + int i = 0; + c = fgetc(fp); + while(c != '<') + { + buffer[i] = c; + i++; + c = fgetc(fp); + } + buffer[i] = '\0'; + lcd.locate(0,pixel); + lcd.printf("%s",buffer); + pixel += 5; + } + } + } + } + } + } + } + } + }while (count <= 5); + fclose (fp); + } + + if(result == HTTP_OK) + { + printf("Read completely\n"); + } + else + { + printf("Error %d\n", result); + } + + return 0; + +} + +